美文网首页
JavaScript学习之基础语法

JavaScript学习之基础语法

作者: wiOS | 来源:发表于2019-01-11 12:37 被阅读12次

    1.变量

    JavaScript 的变量名区分大小写,A和a是两个不同的变量。如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示“无定义”。

    var a;
    a // undefined
    

    如果一个变量没有声明就直接使用,JavaScript 会报错,告诉你变量未定义。

    x
    // ReferenceError: x is not defined
    

    1.1变量的提升

    javaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)

    console.log(a);
    var a = 1;
    

    上面的语法不会报错,因为存在变量提升,它的实际运行会是这样

    var a;
    console.log(a);
    a = 1;//undefined
    

    输出的结果是undefined

    2.标识符(identifier)

    规则

    • 区分大小写,A与a是两个不同的标识符。
    • 标识符首字符可以是Unicode 字母,下划线(_),美元符($),不能是数字。
    • 标识符中其它字符可以是Unicode 字母,下划线(_)、美元符($)、数字组成的。
    var 1// Unexpected number,第一个字符不能是数字
    var ** //Unexpected token ** 标志符中不能有星号
    var -d //Unexpected token - 标志符中不能有减号或连字符
    var u+1 =3 //Unexpected token + 标志符中不能有加号
    

    JavaScript 有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

    3.注释

    // 单行注释
    <!-- 单行注释
    --> 单行注释(只有在行首,其他地方被当作运算符)
    /*
    多行
    注释
    */
    

    4.区块

    对于var命令来说,JavaScript 的区块不构成单独的作用域(scope)

    {
      var a = 1;
    }
    
    a // 1
    

    上面代码中,对于区块内部的a变量,在区块外部依然可以访问,在JavaScript中,区块一般用来构成复杂的语法

    5.条件语句

    5.1 if 和 if ... else语句

    if语法结构

    if(条件) {//条件是一个bool值,true 或 false
      语句
    }
    var i = 2;
    if (i == 2) {
      console.log('i的值为2'); //i的值为2
    }
    赋值表达式(=)
    相等运算符(==)
    严格相等运算符(===)
    

    if ... else 语法结构

    if (条件) {
      // 满足条件时,执行的语句
    } else {
      // 不满足条件时,执行的语句
    }
    

    5.2 switch语句

    语法结构

    switch (a) {
      case "a":
        // 语句a...
        break;
      case "b":
        //语句b ...
        break;
      default:
        // 语句default...
    }
    
    • 当符合case中的a条件时,case中的语句a会执行,break关键字会中断switch语句执行下一个case语句,如果没有break,下一个case语句分执行
    • case语句中可以用表达式,但是和switch后面的表达式是用===匹配,不会进行强类型转换
      5.3 三元运算符
    (条件) ? 表达式1 : 表达式2
    当条件为true时,执行表达式1 否则执行表达式2
    var i = 2;
    var a;
    i == 2  ?  a = i : a = 3
    console.log(a)//a = 2
    

    6.循环语句

    for循环

    for (初始化表达式; 条件; 递增或递减表达式) {
      语句
    }
    var a = 3;
    for (var i = 0; i < a; i++) {
      console.log(i);
    }
    // 0 1 2
    
    var b = 3;
    for (var i = b; i > 0; i--) {
      console.log(i);
    }
    //3 2 1
    

    while 循环

    while(条件) {
    语句
    };
    

    do...while循环

    do {
    语句
    }while(条件);
    
    eg:
    var i = 5;
    do {
       console.log('run');
       i--;
       console.log(i);
    }while(i > 1);
    //run 4 3 2 1
    

    不管条件是否为真,do...while循环至少运行一次

    break和continue

    break语句用于跳出代码块或循环

    for(i = 0; i < 5; i ++) {
        if(i == 3) {
          console.log('break');
          break;
        }
        console.log(i);
    }
    输出:0 1 2 break
    

    continue语句用于跳出当次循环,继续执行下一次循环(如果有)

    for(i = 0; i < 5; i ++) {
        if(i == 3) {
          console.log('continue');
          continue;
        }
        console.log(i);
    }
    输出:0 1 2 continue 4
    

    7.标签(label)

    相当于定位符,用于跳转到程序的任意位置,标签通常与break语句和continue语句配合使用,跳出特定的循环

    label:
      语句
    test: 
        for(i = 0; i < 5; i ++) {
          for(j = 0; j < 5; j ++) {
               if(j == 3) {
                break test;
               }
               console.log('i = ' + i + `, j = ` + j);
            }
        }
    i = 0, j = 0
    i = 0, j = 1
    i = 0, j = 2
    

    参考:https://wangdoc.com/javascript/basic/grammar.html

    相关文章

      网友评论

          本文标题:JavaScript学习之基础语法

          本文链接:https://www.haomeiwen.com/subject/fcvtdqtx.html