zoukankan      html  css  js  c++  java
  • 梳理一下JS的基本语法

    web三层结构来说

     结构层:HTML         从语义角度,描述页面结构
     样式层:CSS          从审美的角度,美化页面
     行为层:JavaScript   从交互的角度,提升用户体验
     
    js:用来制作web页面的交互效果,提升用户体验

    语法概述

    一、JS引入3种的方式:

      1.内嵌引入,但不建议

    2.通过`<script async='async'>`标签引入,可放在head里面,为减少加载时间,一般放在body最后
    3.建议通过link引入
     
    <script>标记的属性:

    type="text/JavaScript"可以省略

    Sync:同步,一个人有序的做多件事

    Async:异步,多个人有序的做多件事情

    async='async'和defer='defer'都是异步下载,区别在:

    async='async'是立即异步下载外部JS,不影响页面其它的操作,js下载完毕立即执行;

    defer='defer'是在js,css整个文档都下载完后再执行,只有外部脚本可以使用

    二、五种数据类型:

    1.字符串类型string("")

    注意:引号既可以用单引号,也可双引号 --建议单引号
    • a,如果字符串中有单引号,就用可引号

    • b,如果字符串内容中单双引号都有,就用转译符,在引号前用。常用的转译符有:"、换行 、缩进

    2.数值类型number:没有被引号引起来的数字:整数、负数、小数...(123),表示一种数据的量

    3.布尔值类型boolean

    boolean在内存中存储的格式: boolean在存储的时候会将ture转成1,false转成0

     
    var a =ture;  
    var b ="ture";
    var c = a == b;
    console.log(c); //输出false
     

    4.undefined:声明变量没有赋值

    5、Null:空的对象

    特殊:NaN(not a number):number的一种。

      // 判断NaN:IsNaN翻译:是一个非数字:如果是数字ture
      //        var a ="abc";
      //        var b =123;
      //        console.log(a-b);
      //        console.log(isNaN(a-b)); // 输出ture
      // 作用:用来表示数字的一种不正常的状态(一般会在计算出现错误时出现)。
    // 特殊:特殊到自己都不等于自己
      var a =NaN;  
      var b =NaN;
      var c = a === b;
      console.log(c); //输出false 
     

    技巧:判断数据的类型:typeof(变量/直接量) 可省略括号:typeof变量/直接量

    三、变量:用来存储数据的内存

           内存:运行内存(电脑运行的同时可以保存数据,断电后清空)  
           内存条:加大运行内存
           硬盘:存储空间的大小 4G 32G  (断电不会清空)
     

    输出的方式:

    • alert():弹出一个提示信息框 - 位置不能改变,不能拖动,不能关闭。其实浏览器的进程已经被暂停了 -- 只能在任务管理器来关闭。

    • console.log() 向控制台输出内容 作用:用于代码的调试 应用:招聘

    • prompt()输入框:使用浏览器输出自己输入的内容

    a.声明变量:创建变量 var a
      var:声明变量的关键字  a:变量名
     
    b.给变量赋值:a="123" =赋值运算符。作用:等号右边结果赋值等号左边的变量
        var a = "123" 
        var b = "456+123"
        console.log(a);  
        console.log(b)
        console.log(a+b)
     
    c.变量名的命名规则:

    1)变量必须以字母开头

     变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做) 
     

    class,id的命名规则:只能由英文字母、数字、下划线以及连接符组成,并且数字不能放在开头

     如果名称以下划线开头,那么后面直接跟数字也是可以的;class,id不可以
     

    2)变量的命名,不能使用javascript中的关键字和保留字 关键字:已经被javascript内部使用过的 保留字:还未被javascript内部使用过,但可能有一天会被用到(备胎)。

    3)区分大小写

    d.变量的类型由变量的赋值来决定的
     var a ="123"; 
     console.log(typeof a);  -- 控制台显示string
     var b =123; 
     console.log(typeof b);  -- 控制台显示numbe
     

    四.运算符(操作符):

    1.运算符的简写:

        var a ;
        a = 10;
    等价于 var a =10;
     

    2.自增自减运算符:b++;//a+=1;a=a+1

         var a = 2;
         var b = 3;
         var c = a++ + b++;
        //a++:a = a+1;
        //后加:先进行运算,再加1
        //var c = a+b;a=a+1;b=b+1;
        var d = ++a + ++b;
        console.log(a);
        console.log(b);
        console.log(c);   //输出5
        console.log(d);   //输出7
     

    3.逻辑运算符:

    优先级:!非  >  &&与 > ||或  
    #&&操作符:求第一个操作数的布尔值,如果这个布尔值为true,那么最终的返回值就是第二个操作数,否则输出第一个
    ||操作符:求第一个操作数的布尔值,如果这个布尔值为true,那么最终的返回值就是第yi个操作数,否则最终的返回值为第er个操作数。
    短路操作:在&&和||中,如果第一个操作数就已经能确定最终返回的结果,那么就不会去计算第二个操作数了

    4.比较运算符(关系运算符):

    1、>
    2、<
    3、>=
    4、<=  
    5、== 是否相等,仅仅是数据的内容,没有判断数据的类型
    6、=== 判断是否全等
    7、!= 不等于
    8、!== 不全等
     

    5.赋值运算符:= 作用:等号右边结果赋值等号左边的变量

    6.逗号运算符: --省略var

        var a,b,c;
        a=b=c=1;
     

    7.条件运算符(三目运算符/三元运算符)

        结构:bolean表达式?操作一:操作二;
        var a=15;
        var b=16;
        var c=24;
       //判断a和b的大小
        a>b?alert(a):alert(b);
       //判断a是否大于b,如果a大于b成立,输出a;否则输出b  --即if else的简写
      //判断a,b,c的大小
        (a > b ? a:b) > c ? alert(a > b ? a:b):alert(c);
       //先找出a和b中的大的,再与c比较
     
    注:优先使用全等和不全等的操作符!

    六.运算符:

     
    1. +号: 加号的作用:
        a,连接两个字符串,连接作用  
        b,两个数值中间的+,是运算作用
        c,字符串与数值之间的+,是连接
    2.-减:两个number间的操作
    3.*乘:两个number间的操作
    4./除:两个number间的操作
    5.%取余(取模):两个number间的操作
    6.10取余(取模)3
    7.()作用:改变计算优先顺序
    8.Math对象(面向对象;万物皆对象)万物皆盒子
     1)Math.pow(a,b); //得到a的b次方
     2)Math.round(a); //四舍五入
     3)Math.ceil(a);  //向上取整
     4)Math.floor(a);  //向下取整
     5)Math.max(a,b,c); //取三个数中的最大值
     6)Math.min(a,b,c);  //
     7)Math.random();  //生成随机数(0-1之间)
       拓展:生成1-50的随机数
        var f =Math.random()*49+1;                        
        console.log(f);
     8)Math.pow(a,1/3);//立方根
        var a = Math.pow(2,10);
        console.log(a);
        var b =Math .round(3.38);
        console.log(b);
     

    七.运算符的优先级

     运算符                                    描述                        
     ++ -- - + ~ ! delete new typeof void   一元运算符、返回数据类型、对象创建、未定义值    
     * / %                                  乘法、除法、取模                  
     + - +                                  加法、减法、字符串连接               
     << >> >>>                              移位                        
    < <= > >= instanceof                    小于、小于等于、大于、大于等于、instanceof
    == != === !==                           等于、不等于、严格相等、非严格相等         
     &&                                     逻辑与                       
    ��                                      逻辑或                       
    ?:                                      条件                        
    =                                       赋值、运算赋值                   
     

    下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。

    八.数据类型的转换:强制转换和隐形转换

    8.1强制转换:

    8.1.1 转Number(字符串/boolean)

     通过prompt输入的数据类型是string,不管是123,还是具体的汉字
     var a=prompt("请输入一段内容");//输入4 
      var b =a+1;
      console .log(b);//输出41
    //想要输出5:
    var a=prompt("请输入一段内容");
    a=number(a);//将原来的字符串a转换成number类型
    var b =a+1;
    console .log(b);//输出5
    console.log(typeof (a));//输出number
    特点:
    a,如果要转换成数字,输入的内容必须是纯数字,否则NaN.
    b、如果内容是空的,转换成0
    c、如果是小数,小数会保留
    d、如果字符串中包含非以上格式,则将其转换为NaN
     

    8.1.2 转Number,parseInt 转换

        var a ="123.abc";
        a = parseInt(a);
        console.log(a);//输出123
        console.log(typeof (a));//输出number
    特点:a、如果有小数,会直接去掉小数。
        b、如果第一个是数字,就继续解析直至字符串完毕或者遇到非数字符号为止
     

    8.1.3 parseFloat():转数字

    与parseInt一样:唯一区别:能保留小数

    8.1.4 boolean转成number

        var a = true;
        a = Number(a);
        console.log(a);
        console.log(typeof (a));

    8.2字符串的转换:

    8.2.1 数值转字符串 法一

       var a = 123;
        a = a.toString();
        console.log(a);
        console.log(typeof (a));//string
     

    直接调用.toString方法可以将内容直接转成字符串

    8.2.2 数值转字符串 法二

      var a = 123;
        a = string(a);
        console.log(a);
        console.log(typeof (a));//string
     

    直接将要转的内容放在string后的括号中

    区别:一是直接调用这个变量对象的方法, 第二个是强制转换

    8.2.3 boolean转string

        var a = true;
        a = Boolean(a);
        console.log(a);
        console.log(typeof (a));
      注意:除了false、空字符""、0、NaN、undefined在转换时会转成false,其余都会转成true
     

    8.3隐式转换:不通过程序猿去写固定代码,浏览器可以直接进行转换

    8.3.1隐式转换成Number:直接在要转换的内容前加上+-*\%
      +a a-0 a*1 a/1 a%1
        var a = "123";
        a = +a;
        b = a1;
        console.log(a);
        console.log(b);
        console.log(typeof (a));
        console.log(typeof (b));
    8.3.2 隐式转换成string:直接在要转换的内容hou加上""
       var a = 123;
        a = a + "";
        console.log(a);
    8.3.3 隐式转换成boolean:直接将a = !!a;或者!a

    九、代码注释:

    源码中被JavaScript引擎忽略的部分就叫做注释,它的作用是对代码进行解释。Javascript提供两种注释:一种是单行注释,用 // 起头;另一种是多行注释,放在 /* 和 */ 之间。

    只有在js创建的时间,在函数时,推荐使用多行注释/** */。其余时间多行注释易出现问题

    注:虽然js代码虽然对空格、换行、缩进不敏感,但一定要注意书写。建议既加分号,又换行 - 可读性更强

    一、流程控制:

    1、if结构 :用于判断某些条件是否执行

      if_else: 可以判断2个条件
      if_else if_else 判断多个条件
        var a = prompt("带了多少钱");
        if(a>300){
            console.log("你的钱超过了300,请吃饭");
        }
       else if(a>200){
           console.log("你的钱不够300,够200,请吃快餐");
         }
       else{
            console.log("明天记得带够");
        }
        console.log("程序结束")2016.10.13 18:06:39 2016.10.13 18:06:41 2016.10.13 18:06:43 2016.10.13 18:06:44 

    注意:
    • 大括号后不能加分号

    • 程序运行到if之后,判断if括号里的条件,如果条件满足,则执行内容;如果不满足,就不会执行;只会执行一个!

    #注意:
    • a、大括号后不能加分号;

    • b、代码不支持连写:90<pj<100,只能90<pj&&pj<100;

    2、switch case结构:作用是与else if是一样的,

       var a = prompt("请输入今天星期几对应的数字");
        switch (a) {
            case "1":
                alert("您输入的是星期一");
                break;
            case "2":
                alert("您输入的是星期二");
                break;
            case "3":
                alert("您输入的是星期三");
                break;
            case "4":
                alert("您输入的是星期四");
                break;
            case "5":
                alert("您输入的是星期五");
                break;
            case "6":
                alert("您输入的是星期六");
                break;
            case "7":
                alert("您输入的是星期日");
                break;
            default:
                alert("你输入什么鬼");
        }

    二、控制台的sources看源码

    a,打开要查看的页面
    b,打断点,刷新页面,会发现命中了断点
    c,鼠标放在变量名上,会发现输入值

    JS背景

    -1995年,Netscape公司开发一个脚本语言,叫LiveScript,用于做验证的。为了推广,利用当时最火的Java词汇,改名JavaScript.-netscapt是第一款浏览器

    • 03年以前,牛皮癣广告,很被排斥

    • 04年谷歌用js技术来做ajax技术

    • 07年,乔布斯发布第一代苹果,移动端页面开始发展

    • 10年,html5推出画布--做游戏。例:切水果

    • 11年,node.js诞生,js从移动端铺开服务器端

    浏览器是如何工作的:

    http://www.2cto.com/kf/201202/118111.html

    浏览器引擎,用来查询和操作渲染引擎

    渲染引擎:用来显示请求的内容,负责解析html和css

    Javascript interpreter:js解析器,负责执行js

    notworking网络:负责发送网络请求

    JavaScript语言:

    1. 是世界上用的最多的脚本语言。脚本语言:不需要编译,直接运行时边解析边执行的语言

      编译:一次性把所有代码转换成cpu可以看懂的语言,一行一行执行

      解释:一行一行解析,解析一行执行一行

    2. js是一种客户端的脚本语言

    js组成:ECMAScript、DOM、BOM

    • ECMAScript:js的语法规范

    • DOM:js操作网页上元素的API

    • BOM:JS操作浏览器部分功能的API

  • 相关阅读:
    随意谈谈tcp
    %matplotlib inline 被注释掉后,pycharm不能生成图
    (转)SQL Server 2012 手动安装帮助文档+排错
    (转)线性回归数学推导(详细过程)
    numpy的函数使用
    SQL 测验题目(30道)
    SourceInsight 支持 Python
    (转)GitHub上想下载单个文件方法
    (转)SQL Server 数据类型映射
    数据库的基本使用(C#语言)
  • 原文地址:https://www.cnblogs.com/zhaowenxin/p/5962324.html
Copyright © 2011-2022 走看看