function add(num) {
var sum;
for (var i = 1; i < num + 1; i++){
sum = (sum || 0) + i;
};
return sum;
}
add(9);
for ループで i に和を加算したときの和の定義の振る舞いを説明するキーワードは何ですか? これは三項演算ですか?明らかに、最初にループするときは未定義であるため、javascript は 0 を選択します。それはなぜですか?
function add(num) {
var sum;
for (var i = 1; i < num + 1; i++){
sum = (sum || 0) + i;
};
return sum;
}
add(9);
for ループで i に和を加算したときの和の定義の振る舞いを説明するキーワードは何ですか? これは三項演算ですか?明らかに、最初にループするときは未定義であるため、javascript は 0 を選択します。それはなぜですか?
「または」演算子||
は次のように機能します。
undefined
はtrueyではない ため、ループの最初の 1 回目は 0 です。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
たとえば、0
が の有効な値である場所は使用しないでくださいb
。