使用或语句在javascript中定义变量

时间:2012-08-29 12:02:06

标签: javascript

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

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

并且返回始终为真。我认为如果论证是'undefined',那将是真的吗? 谢谢你的回答! :)

6 个答案:

答案 0 :(得分:5)

||是逻辑或运算符。因此false OR true评估为true

undefined也是falsey,所以它是返回运营商右侧的简短手。

你可能想要这个

var arg = typeof argument !== 'undefined' ? argument : true;

答案 1 :(得分:5)

如果true falsy ,则会打印argument,即:

  • false
  • null
  • undefined
  • 空字符串
  • 号码0
  • 号码NaN

e.g:

'' || true

将评估为true

答案 2 :(得分:2)

将其更改为:

var arg=(typeof argument!=='undefined'?argument:true);

答案 3 :(得分:1)

逻辑上,ORedtrue的所有内容始终为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.

答案 4 :(得分:1)

var test = function(argument){
  var arg = typeof argument === "undefined" ? true : argument;
  console.log(arg);
};

答案 5 :(得分:1)

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