var w = q || q2;这个表达意味着什么?

时间:2015-04-05 23:20:27

标签: javascript

这意味着什么?

var q = [];
var q2 = ["canada","usa","mexico"];
var w = q||q2;
document.writeln(w);

变量w的值是:[]空列表。

有人可以向我解释为什么显示这个[]而不是[“canada”,“usa”,“mexico”]。

1 个答案:

答案 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的内容。