增加未定义的对象属性而不会降低性能

时间:2014-06-07 15:32:14

标签: javascript

有没有办法增加普通JS对象的已定义和未定义属性而没有性能"惩罚"?

var foo = {
  counter: 0
};

for (var i=10000; i >= 0; i--) { 
  foo['counter']++;
  foo['anyOtherCounter']++; // This should work as 'counter' but without errors 
}

使用conditionals(if语句或三元运算符)来检查属性是否已定义被视为性能损失。

欢迎使用Bleeding edge ES功能。

1 个答案:

答案 0 :(得分:0)

如果您之前没有设置该属性,则不会在循环中绕过条件(某种类型)。

我已经在http://jsperf.com/incrementing-properties设置了一个测试用例,如果您不将undefined强制转换为数字,那么实际上并没有那么多的惩罚。< / p>

  

欢迎使用Bleeding edge ES功能

我不这么认为,他们很可能没有优化那么多。但是,对于不存在的属性,Proxies产生0而不是undefined可能是个主意。