zoukankan      html  css  js  c++  java
  • 【《你不知道的JS(中卷①)》】五、语法

    五、语法:

    ​ 语法(grammar)与词法(syntax)不同。后者强调语言的 运算符、关键字等。而语法定义了此法规则是如何构成可运行的程序代码的。

    一)、语句和表达式:

    语句(statement)与表达式(expression),举例说明:

    var a = 3 * 6;
    

    a = 3 * 6是一个赋值表达式,加上var,就表明是一个声明同时赋值的语句,即语句由一个或多个表达式组成

    1、语句的结果值:

    语句都有一个结果值,如果使用控制台,输入语句,默认情况下控制台会显式所执行的最后一条语句的结果值。

    或者使用 eval函数(很多语言都有这个函数,用以将字符串视作语句执行,并返回语句结果值)。

    var a, b;
    a = if (true) {
        b = 4 + 38;
    };
    a;  // 42 
    

    2、上下文规则:

    1)、大括号:

    JS中有两种情况会用到{}:

    1. 对象常量

      var a = {
      	foo: bar()
      };
      
    2. 标签

    2)、对象解构:

    ES6中新加了解构赋值:

    function getData() {
        // ..
        return {
            a: 42,
            b: "foo"
        };
    }
    var {a, b} = getData();
    console.log(a, b);  // 42 "foo"
    

    3)、else if:

    JS中可以使用else if的原因是,if和else只包含单条语句的时候可以省略代码的{}。

    二)、运算符优先级:

    ​ 利用运算符优先级可以实现逻辑短路,利用逻辑短路可以实现更简洁的类似if else的逻辑表达。

    三)、自动分号:

    ​ 虽然JS有时会为代码行补上缺失的分号,即自动分号插入(Automatic Semicolon Insertion,ASI),但是我们不应该依赖他。

    四)、错误:

    ​ JS拥有各种类型的运行时错误(TypeError、ReferenceError、SyntaxError等),同时也定义了一些编译时错误(早期错误)。

    五)、函数参数:

    ​ 不要再使用arguments数组。

    六)、try..finally:

    finally中的代码总是会在try之后执行,如果有catch的话则在catch之后执行。也可以将finally中的代码看作一个回调函数,即无论出现什么情况最后一定会被调用。

    ​ 如果有finally语句,try中的continue、break、return语句最后还是要执行finally语句,如果finally报错(throw)或return、break,try中的结果会被丢弃。

    七)、switch:

    switch (a) {
        case 2:
            // ..
            break;
        case 42:
            // ..
            break;
        default:
            // ..
    }
    

    a会与case表达式逐一比较(严格相等,===),如果匹配就执行该case中的代码。

  • 相关阅读:
    [ffmpeg 扩展第三方库编译系列] 关于 mingw32 下编译libcaca
    新版本的tlplayer for android ,TigerLeapMC for windows发布了
    tlplayer 所有平台版本支持水印叠加
    更新Windows ActiveX,Ios
    Linux批量“解压”JAR文件
    Linux进阶路线
    30个实用的Linux find命令示例
    Redhat 无线(Wifi)上网命令行配置
    PLSQL developer常用技巧
    Hibernate4.3.5搭建Log4j日志环境
  • 原文地址:https://www.cnblogs.com/enmac/p/13276810.html
Copyright © 2011-2022 走看看