誰かが私のコードが思い通りに動かない理由を説明できますか?
test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);
return は常に true です。'undefined'引数が?の場合にのみ true になると思いました。答えてくれてありがとう!:)
誰かが私のコードが思い通りに動かない理由を説明できますか?
test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);
return は常に true です。'undefined'引数が?の場合にのみ true になると思いました。答えてくれてありがとう!:)
||論理 or 演算子です。したがってfalse OR true、 に評価されtrueます。
undefined同様にfalsey、演算子の右側を返すための省略形です。
代わりにこれが欲しいかもしれません
var arg = typeof argument !== 'undefined' ? argument : true;
がfalsytrueの場合、つまり次のように表示されます。argument
falsenullundefined0NaN例えば:
'' || true
に評価されtrueます。
次のように変更します。
var arg=(typeof argument!=='undefined'?argument:true);
ECMA-262 11.11によると、論理 OR ステートメントは、最初の truethy 式の値、または前の式が truethy でない場合は最後の式の値を返します。
論理的には、ORedを持つものtrueは常にtrueです。
A と B の真理値表を見てみましょう
A B A || B
T T T <-- one of them is true
T F T <-- one of them is true
F T T <-- one of them is true
F F F <-- only both false can create a false in an OR operation.
var test = function(argument){
var arg = typeof argument === "undefined" ? true : argument;
console.log(arg);
};