noo*_*eed 0 javascript undefined null-coalescing
function add(num) {
var sum;
for (var i = 1; i < num + 1; i++){
sum = (sum || 0) + i;
};
return sum;
}
add(9);
Run Code Online (Sandbox Code Playgroud)
什么是关键字来描述在for循环中添加到"i"时定义sum的行为?这是三元手术吗?显然第一次循环它是未定义的,所以javascript选择0.为什么?
"或"运算符的||工作方式如下:
由于undefined是不 truthy,sum || 0为零第一次循环.
我不知道这个行为有一个特定的术语.*这只是一种初始化可能尚未预先初始化的变量的简便方法.在您的示例中,在开始时初始化变量更有意义:
function add(num) {
var sum = 0;
for (var i = 1; i < num + 1; i++){
sum += i;
};
return sum;
}
Run Code Online (Sandbox Code Playgroud)
condition ? expr1 : expr2
Run Code Online (Sandbox Code Playgroud)
但请注意他的警告:
使用这种模式是一个常见的逻辑错误,其中第一个操作数可能合法地是假的.永远不要使用
var a = b || c比如说0有效值的地方b.