var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);
变量w的值是:[]空列表。
有人可以向我解释为什么显示这个[]而不是[“canada”,“usa”,“mexico”]。
答案 0 :(得分:1)
您应该从MDN阅读Logical Operators。根据文件
逻辑运算符OR(
||
)expr1 || expr2
如果可以转换为
expr1
,则返回true;
,否则返回expr2
。因此,当与布尔值一起使用时,||如果有,则返回true 操作数是真的;如果两者都为假,则返回false。
简而言之,逻辑运算符从左到右进行评估。在您的情况下,由于您已将q
声明为空数组([]
),因此它会计算为true并立即进行并为此分配w
。
如果您希望q2
优先,您只需执行
var w = q2 || q;
这样,只有当q2
评估为false时才会将w
指定为q
。另一个选择是根本不声明q
或将其声明为假的。您可以找到评估为false
here的内容。