我经常发现自己使用内联初始化(参见下面的示例),特别是在我不知道哪个case循环会命中的switch语句中。我发现它比if语句更容易阅读。
但这是一种好的做法还是会产生副作用或性能受损?
for (var i in array) {
var o = o ? o : {}; // init object if it doesn't exist
o[array[i]] = 1; // add key-values
}
有没有一个很好的网站去获取编码风格提示?
答案 0 :(得分:7)
为什么不在循环之外声明它?
var o = {};
for (var i in array) {
o[array[i]] = 1;
}
否则不,我看不出你正在做什么的问题。
答案 1 :(得分:7)
另一种常用的模式是使用Logical OR ||
运算符(比你的三元组IMHO更具可读性):
//...
var obj = o || {};
如果第一个操作数计算为false
,则此运算符将返回其第二个操作数,否则返回第一个操作数。
在您期望对象时使用它是安全的,因为那些 falsy 值是null
,undefined
,NaN
,0
,一个零长度的字符串,当然还有false
。
我发现在函数参数上设置默认值很有用,当然,任何 falsy 值都应该被函数预期为有效:
function test (arg1) {
arg1 = arg1 || "default value";
//..
}