0
这是什么意思?var w = q || q2;这个表达意味着什么?
var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);
变量w的值是:[]空列表。
有人可以向我解释为什么它显示这个[]而不是[“加拿大”,“美国”,“墨西哥”]。
这是什么意思?var w = q || q2;这个表达意味着什么?
var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);
变量w的值是:[]空列表。
有人可以向我解释为什么它显示这个[]而不是[“加拿大”,“美国”,“墨西哥”]。
您应该从MDN读取Logical Operators。根据文档
逻辑算子OR(
||
)expr1 || expr2
返回
expr1
如果它可以被以其它方式转化成true;
,返回expr2
。因此,当与布尔值一起使用时,||如果 操作数为true,则返回true;如果两者都是假的,则返回false。
简而言之,逻辑运算符从左到右进行评估。在你的情况下,由于你已经声明q
是一个空的数组([]
),它的计算结果为真,并立即开始并将w
分配给该数组。
如果你想q2
占先,你可以简单地做
var w = q2 || q;
所以只有当q2
计算结果为falsey将其分配w
是q
代替这种方式。另一种选择是根本不宣布q
或声明它有点虚伪。你可以找出什么评估false
here。
因为'[]'是一个被认为是真值的数组对象。 'q.length? q:q2;' – undefined 2015-04-05 23:22:09
不为空; falsy。但'q'是真的,所以'q || q2'将评估为'q' – elclanrs 2015-04-05 23:22:11