誰かが私のコードが思い通りに動かない理由を説明できますか?
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
false
null
undefined
0
NaN
例えば:
'' || 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);
};