函数中定义的 JS 对象字面量会被优化吗?
Will JS object literals defined in a function be optimized?
JavaScript 会优化方法中定义的对象字面量吗?假设我有一个被广泛使用的简单查找函数:
function lookup(value) {
return {
"A": "a",
"B": "b",
"C": "c"
}[value];
}
在函数之外定义对象以供重用有什么好处,或者引擎会为我优化它吗?
var object = {
"A": "a",
"B": "b",
"C": "c"
};
function lookup1(value) {
return object[value];
}
function lookup2(value) {
return {
"A": "a",
"B": "b",
"C": "c"
}[value];
}
var dateBefore = new Date().getTime();
for (var i = 0; i < 100000000; i++) {
var a = lookup2('A');
}
var dateAfter = new Date().getTime();
console.log(dateAfter - dateBefore);
var dateBefore = new Date().getTime();
for (var i = 0; i < 100000000; i++) {
var a = lookup1('A');
}
var dateAfter = new Date().getTime();
console.log(dateAfter - dateBefore);
JavaScript 会优化方法中定义的对象字面量吗?假设我有一个被广泛使用的简单查找函数:
function lookup(value) {
return {
"A": "a",
"B": "b",
"C": "c"
}[value];
}
在函数之外定义对象以供重用有什么好处,或者引擎会为我优化它吗?
var object = {
"A": "a",
"B": "b",
"C": "c"
};
function lookup1(value) {
return object[value];
}
function lookup2(value) {
return {
"A": "a",
"B": "b",
"C": "c"
}[value];
}
var dateBefore = new Date().getTime();
for (var i = 0; i < 100000000; i++) {
var a = lookup2('A');
}
var dateAfter = new Date().getTime();
console.log(dateAfter - dateBefore);
var dateBefore = new Date().getTime();
for (var i = 0; i < 100000000; i++) {
var a = lookup1('A');
}
var dateAfter = new Date().getTime();
console.log(dateAfter - dateBefore);