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({});
精彩评论