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

Posted

技术标签:

【中文标题】var foo = foo ||警报(foo);【英文标题】:var foo = foo || alert(foo); 【发布时间】:2011-05-18 17:22:45 【问题描述】:

有人能解释一下这是做什么的吗?

var foo = foo || alert(foo);

【问题讨论】:

【参考方案1】:

如果foo 已经定义并且计算结果为真,则设置foo = foo,即它什么也不做。

如果 foo 已定义但计算结果为 false,它将弹出任何 foo 是(falsenullundefined、空字符串、0、NaN),但由于 alert 不返回任何内容, foo 将被设置为 undefined

如果foo 尚未定义,则会抛出异常。 (编辑:在您的示例中,由于var foo 声明,foo 将始终被定义。)

【讨论】:

【参考方案2】:

如果 foo 的计算结果为 false(例如 false、null 或零),则 || 运算符后面的值也会被计算,并显示该值。

alert 方法不返回值,因此如果 foo 评估为 false,它将变为未定义,否则将分配它自己的值。

【讨论】:

不是分配了吗?这是一个右值 alert(foo) 返回未定义。 @Rocket:我发现的所有指定返回值的文档(Mozilla 文档没有)都说它没有返回值。 msdn.microsoft.com/en-us/library/ms535933%28VS.85%29.aspx @Rocket, @Guffa:其实说alert 返回undefined 并没有错误,因为javascript 在没有返回值的情况下隐式返回undefined .或者换句话说,不可能区分一个没有返回值的函数和一个有return undefined的函数。【参考方案3】:
var foo;

if (foo)
    foo = foo;
else
    foo = alert(foo); // probably undefined

【讨论】:

@Hogan: > alert(foo);是左值而不是右值。什么?

以上是关于var foo = foo ||警报(foo);的主要内容,如果未能解决你的问题,请参考以下文章

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

var foo = "11"+2+"1"; console.log(foo); //1121 好多文章答案写错了,我发下给初学的朋友看到,以免一开始就学错了(

PHP 比较运算符和 if (!foo()) 形式的语句

像“var foo = function bar() ...”这样的Javascript函数?

有具体名称的匿名函数var bar = function foo(){}