递增未定义的对象属性而不影响性能



是否有一种方法可以在没有性能"惩罚"的情况下增加一个普通JS对象的定义和未定义属性?

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

使用条件(if语句或三元运算符)检查是否定义了属性将被认为是性能损失。

如果之前没有设置属性,就无法绕过循环中的条件(某种类型)。

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

前沿的ES特性是受欢迎的

我不这么认为,它们很可能没有那么优化。对于不存在的属性,生成0而不是undefined的代理可能是一个想法。

相关内容

  • 没有找到相关文章