var foo = foo ||警报(FOO);

时间:2010-12-01 19:48:53

标签: javascript logic

有人可以解释这是做什么的吗?

var foo = foo || alert(foo);

3 个答案:

答案 0 :(得分:10)

如果foo已经定义并且评估为true,则设置foo = foo,即它什么都不做。

如果foo已定义但评估为false,则会弹出foofalsenullundefined,空字符串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