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
是(false
、null
、undefined
、空字符串、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 好多文章答案写错了,我发下给初学的朋友看到,以免一开始就学错了(