语句和表达式
语句相当于句子,表达式相当于短语,运算符则相当于标点符号和连接词。
语句的结果值
代码块的结果值就如同一个隐式的返回,即返回最后一个语句的结果值。
表达式的副作用
最常见的有副作用(也可能没有)的表达式是函数调用:
function foo() {
a = a + 1;
}
var a = 1;
foo();
console.log(a);
var a = 42;
var b = a++;
a++ 首先返回变量 a 的当前值 42 (再将该值赋给 b ),然后将 a 的值加 1:
++ 在前面时,如 ++a ,它的副作用(将 a 递增)产生在表达式返回结果值之前,而 a++ 的副作用则产生在之后。
var a = 42;
var b = (a++);
a; // 43
b; // 42
( ) 本身并不是一个封装表达式,不会在表达式 a++ 产生副作用之后执行。
上下文规则
大括号
下面两种情况会用到大括号 { .. }
对象常量
代码块
对象解构
{ .. } 还可以用作函数命名参数(named function argument)的对象解构(object destructuring)
4. else if 和可选代码块
运算符优先级
&& 运算符先于 || 执行
短路
对 && 和 || 来说,如果从左边的操作数能够得出结果,就可以忽略右边的操作数。我们将这种现象称为“短路”(即执行最短路径)。