gpt4 book ai didi

javascript - 对 undefined variable 进行操作 - 空合并

转载 作者:行者123 更新时间:2023-11-28 11:53:47 26 4
gpt4 key购买 nike

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。为什么呢?

最佳答案

“或”运算符||的工作原理如下:

  • 如果第一个操作数为“true”,则返回第一个操作数。
  • 否则,返回第二个操作数。

因为未定义不是truthy , 总和 || 0 第一次循环时为零。

我不知道这种行为有一个特定的术语。 * 这只是一种初始化可能尚未预初始化的变量的便捷方法。在您的示例中,在开始时初始化变量会更有意义:

function add(num) { 
var sum = 0;
for (var i = 1; i < num + 1; i++){
sum += i;
};
return sum;
}

<小时/>请注意,这与 conditional (ternary) operator 无关。 :

condition ? expr1 : expr2 

<小时/>* 感谢 @joews,这种行为有一个术语:“空合并”

但请注意他的警告:

It's a common logic bug to use this pattern where the first operand could legitimately be falsy. Never use var a = b || c where, say, 0 is a valid value for b.

关于javascript - 对 undefined variable 进行操作 - 空合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com