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 badges2 Answers
Reset to default 7Another 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.
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742416829a4439903.html
评论列表(0条)