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