0

誰かが私のコードが思い通りに動かない理由を説明できますか?

test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);

return は常に true です。'undefined'引数が?の場合にのみ true になると思いました。答えてくれてありがとう!:)

4

6 に答える 6

5

||論理 or 演算子です。したがってfalse OR true、 に評価されtrueます。

undefined同様にfalsey、演算子の右側を返すための省略形です。

代わりにこれが欲しいかもしれません

var arg = typeof argument !== 'undefined' ? argument : true;
于 2012-08-29T12:03:18.240 に答える
5

falsytrueの場合、つまり次のように表示されます。argument

  • false
  • null
  • undefined
  • 空の文字列
  • 番号0
  • 番号NaN

例えば:

'' || true

に評価されtrueます。

于 2012-08-29T12:03:35.437 に答える
2

次のように変更します。

var arg=(typeof argument!=='undefined'?argument:true);
于 2012-08-29T12:06:49.983 に答える
1

ECMA-262 11.11によると、論理 OR ステートメントは、最初の truethy 式の、または前の式が truethy でない場合は最後の式の値を返します。

于 2012-08-29T12:08:07.580 に答える
1

論理的には、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.
于 2012-08-29T12:03:33.610 に答える
1
var test = function(argument){
  var arg = typeof argument === "undefined" ? true : argument;
  console.log(arg);
};
于 2012-08-29T12:06:08.193 に答える