var key = 'a';
map[key] = 'value';
map['a'] = 'value';
在Java中,这是在编译过程中自动优化的。我想知道是否有任何JS编译器自己进行这种优化。
答案 0 :(得分:0)
This answer与此处相关;性能没有区别,因为一个是另一个的别名。通过测试可以看到它们具有相同的性能:
var objectTest = {
a: 1,
}
console.time('dot');
for (var i = 0; i < 100000000; i++) {
objectTest.a = objectTest.a + 1;
}
console.timeEnd('dot');
objectTest = {
a: 1,
}
console.time('bracket');
for (var i = 0; i < 100000000; i++) {
objectTest['a'] = objectTest['a'] + 1;
}
console.timeEnd('bracket');
答案 1 :(得分:-2)
因此,没有编译器,任何优化的机会都非常低。
var key = 'a';
map['a'] = 'value';
我认为解释器将[a]
视为普通变量,因此将其保留在堆中。因此,这两种访问类型是相等的(从成本上来说)。另一方面,应始终避免使用静态语句。