以下只是一个理论上的 JavaScript 问题。我很好奇以下内容是否可以转换为单个语句:
if(!window.foo){
window.foo = [];
}
window.foo.push('bar');
这段代码大家可能都写过,但是一行能完成吗?
起初我以为这样的事情会起作用:
(window.foo || window.foo = []).push('bar');
但这不起作用,因为分配无效。接下来,我尝试在推送上链接某些内容,但这不起作用,因为推送不返回数组。
有什么想法可以用纯 JavaScript 来完成吗?
(顺便说一句,结果应该是window.foo = ['bar']
)
你的任务已经倒退了*。它应该是:
(window.foo = window.foo || []).push('bar');
The ||
JavaScript 中的运算符不返回布尔值。如果左侧为真,则返回左侧,否则返回右侧。
a = a || [];
相当于
a = a ? a : [];
因此,编写上述内容的另一种方法是:
(window.foo = window.foo ? window.foo : []).push('bar');
* 详情见评论
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)