有人可以解释一下为什么我的代码不能按我的意愿工作吗?
test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);
并且返回总是正确的。我认为只有当争论是真实的'undefined'
?感谢您的回答!:)
有人可以解释一下为什么我的代码不能按我的意愿工作吗?
test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);
并且返回总是正确的。我认为只有当争论是真实的'undefined'
?感谢您的回答!:)
||
是逻辑或运算符。所以false OR true
评估为true
。
undefined
也是falsey
,所以它是返回运算符右侧的简写。
你可能想要这个
var arg = typeof argument !== 'undefined' ? argument : true;
true
如果argument
是falsy ,它将打印,即:
false
null
undefined
0
NaN
例如:
'' || true
将评估为true
。
将其更改为:
var arg=(typeof argument!=='undefined'?argument:true);
从逻辑上讲,任何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);
};
根据ECMA-262 11.11,逻辑 OR 语句返回第一个 truethy 表达式的值,或者如果没有前一个表达式是 truethy,则返回最后一个表达式的值。