最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - code-style: Is inline initialization of JS objects ok? - Stack Overflow

programmeradmin0浏览0评论

I often find myself using inline initialization (see example below), especially in a switch statement when I don't know which case loop will hit. I find it easier to read than if statements.

But is this good practice or will it incur side-effects or a performance hit?

for (var i in array) {
    var o = o ? o : {};  // init object if it doesn't exist
    o[array[i]] = 1;     // add key-values
}

Is there a good website to go to get coding style tips?

I often find myself using inline initialization (see example below), especially in a switch statement when I don't know which case loop will hit. I find it easier to read than if statements.

But is this good practice or will it incur side-effects or a performance hit?

for (var i in array) {
    var o = o ? o : {};  // init object if it doesn't exist
    o[array[i]] = 1;     // add key-values
}

Is there a good website to go to get coding style tips?

Share Improve this question edited Apr 4, 2010 at 16:57 Jon Seigel 12.4k8 gold badges60 silver badges93 bronze badges asked Feb 3, 2010 at 6:07 michaelmichael 4,5478 gold badges50 silver badges75 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 7

Another monly used pattern to do the same, is the use of the Logical OR || operator (a little bit more readable than your ternary IMHO):

//...
var obj = o || {};

This operator will return its second operand if the first one evaluates to false, otherwise it will return the first one.

Is safe to use it when you expect an object, since those falsy values are null, undefined, NaN, 0, a zero-length string, and of course false.

I find it useful to set default values on function arguments, when of course any of the falsy values are expected as valid by the function:

function test (arg1) {
  arg1 = arg1 || "default value";
  //..
}

Why not just declare it outside the loop?

var o = {};
for (var i in array) {
  o[array[i]] = 1;
}

Otherwise no, I don't see a problem with what you're doing.

发布评论

评论列表(0)

  1. 暂无评论