《你不知道的JS(中)》读书笔记6

第5章 语法

  • 语句相当于句子,表达式相当于短语

  • 标签语句:

    • continue foo不是跳转到标签foo所在位置继续执行,而是执行foo循环的下一轮循环
    • break foo不是跳转到标签foo所在位置继续执行,而是跳出标签foo所在循环代码块,继续执行后面的语句
  • JSON-P通过将JSON数据传递给函数,将JSON转换为合法的JS语法

  • []+{} //"[object Object]"[]会被强制类型转换为””,{}会被强制类型转换为”[object Object]”

  • {}+[] //0{}空代码块,+[]显示强制类型转换为0

  • 三元运算符和=运算符是右关联的

    1
    2
    3
    4
    5
    6
    var a=42;
    var b="foo";
    var c=false;
    var d=a&&b||c?c||b?a:c&&b:a; //42

    // (a&&b||c)?((c||b)?a:(c&&b)):a
  • ASI:自动分号插入

  • 对于ES6来说,函数参数被省略或被赋值为undefined效果一样,但是arguments数组不同,一个为空,一个出现值为undefined的单元

  • 不要同时访问命名参数和其对应的arguments数组单元

  • finally中抛出异常或者有返回值,都会覆盖try和catch中的return返回值

  • switch中的case运算符是===,case的表达式即使结果为真值,但是不是严格意义上的true,则不会执行。