开发者

Elegant way to init and extend a javascript array

开发者 https://www.devze.com 2023-01-15 21:54 出处:网络
Is there a sweet way to init an array if not already initilized? Currently the code looks something like:

Is there a sweet way to init an array if not already initilized? Currently the code looks something like:

开发者_JAVA百科
if (!obj) var obj = [];
obj.push({});

cool would be something like var obj = (obj || []).push({}), but that does not work :-(


var obj = (obj || []).push({}) doesn't work because push returns the new length of the array. For a new object, it will create obj with value of 1. For an existing object it might raise an error - if obj is a number, it does not have a push function.

You should do OK with:

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


The best I can think of is:

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


Just a tiny tweak to your idea to make it work

var obj = (obj || []).concat([{}]);


with(obj = obj || []) push({});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号