0

有人可以解释一下为什么我的代码不能按我的意愿工作吗?

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

并且返回总是正确的。我认为只有当争论是真实的'undefined'?感谢您的回答!:)

4

6 回答 6

5

||是逻辑或运算符。所以false OR true评估为true

undefined也是falsey,所以它是返回运算符右侧的简写。

你可能想要这个

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

true如果argumentfalsy ,它将打印,即:

  • 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

从逻辑上讲,任何ORed带有.truetrue

让我们看看 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 回答
1

根据ECMA-262 11.11,逻辑 OR 语句返回第一个 truethy 表达式的,或者如果没有前一个表达式是 truethy,则返回最后一个表达式的值。

于 2012-08-29T12:08:07.580 回答