有人可以解释一下为什么我的代码不能正常工作吗?
test = function(argument){
var arg = argument || true;
console.log(arg)
};
test(false);
并且返回始终为真。我认为如果论证是'undefined'
,那将是真的吗?
谢谢你的回答! :)
答案 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)
逻辑上,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.
答案 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,则返回最后一个表达式的值。