有人可以解释这是做什么的吗?
var foo = foo || alert(foo);
答案 0 :(得分:10)
如果foo
已经定义并且评估为true,则设置foo = foo
,即它什么都不做。
如果foo
已定义但评估为false,则会弹出foo
为false
,null
,undefined
,空字符串0, NaN),但由于alert
不返回任何内容,foo
将设置为undefined
。
如果尚未定义foo
,则会抛出异常。 (修改>在您的示例中,由于foo
声明,始终会定义var foo
。)
答案 1 :(得分:4)
如果foo
的计算结果为false(例如false,null或0),则还会评估||
运算符之后的值,并显示该值。
alert
方法不会返回值,因此如果foo
计算为false,则{{1}}将变为未定义,否则将为其分配自己的值。
答案 2 :(得分:3)
var foo;
if (foo)
foo = foo;
else
foo = alert(foo); // probably undefined