优雅的方式来初始化和扩展一个javascript数组

时间:2010-09-14 13:07:56

标签: javascript arrays

如果尚未启动数组,是否有一种很好的方法来初始化数组? 目前代码看起来像:

if (!obj) var obj = [];
obj.push({});

很酷就像var obj = (obj || []).push({}),但这不起作用: - (

4 个答案:

答案 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({});