如果尚未启动数组,是否有一种很好的方法来初始化数组? 目前代码看起来像:
if (!obj) var obj = [];
obj.push({});
很酷就像var obj = (obj || []).push({})
,但这不起作用: - (
答案 0 :(得分:14)
var obj = (obj || []).push({})
不起作用,因为push
返回数组的新长度。对于新对象,它将创建值为{1}的obj
。对于现有对象,它可能会引发错误 - 如果obj
是数字,则它没有push
函数。
你应该用:
var obj = obj || [];
obj.push({});
答案 1 :(得分:2)
我能想到的最好的是:
var obj;
(obj = (obj || [])).push({});
答案 2 :(得分:1)
只是对你的想法进行微调,以使其发挥作用
var obj = (obj || []).concat([{}]);
答案 3 :(得分:0)
with(obj = obj || []) push({});