2016-09-16 2 views
2

메소드에서 정의 된 객체 리터럴을 최적화하는 JavaScript가 있습니까? 내가 광범위하게 사용됩니다 간단한 검색 기능이 있다고 가정 :함수에 정의 된 JS 객체 리터럴이 최적화됩니까?

function lookup(value) { 
    return { 
     "A": "a", 
     "B": "b", 
     "C": "c" 
    }[value]; 
} 

멀리 나를위한 것이다 엔진 최적화는 재사용을 위해 함수의 외부에서 객체를 정의하는 어떤 이득이 있는가, 또는? 마음에 오는

+5

첫 번째 질문은 : 어떤 엔진? V8? 거미 원숭이? JScript? 해당 엔진 중 어느 버전입니까? –

+0

함수가 한 번만 호출되면 어떤 종류의 내부 메모가 최적화와 반대가됩니다. 한 번만 개체를 ​​구성하는 LookupHelper 개체에 테이블을 캡슐화하여 두 가지 방법을 결합합니다. –

+0

특정 엔진이 없습니다. –

답변

-1

var object = { 
 
\t "A": "a", 
 
\t "B": "b", 
 
\t "C": "c" 
 
}; 
 

 
function lookup1(value) { 
 
    return object[value]; 
 
} 
 

 
function lookup2(value) { 
 
    return { 
 
\t \t "A": "a", 
 
\t \t "B": "b", 
 
\t \t "C": "c" 
 
\t }[value]; 
 
} 
 

 
var dateBefore = new Date().getTime(); 
 
for (var i = 0; i < 100000000; i++) { 
 
\t 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++) { 
 
\t var a = lookup1('A'); 
 
} 
 
var dateAfter = new Date().getTime(); 
 

 
console.log(dateAfter - dateBefore);

+1

"재사용을 위해 함수 외부에서 객체를 정의하면 어떤 이점이 있습니까? 아니면 엔진이 저를 위해 최적화 할 것입니까?" 첫 번째 대답입니다. 그리고 나는 너를 시범했다. – Laurianti

+1

고맙습니다. 많은 차이는 없지만 차이점이 있으며 적어도이 테스트에서 사용하는 엔진이 나를 최적화하지 않는다는 점이 내 질문에 대한 대답입니다. –

+0

@MichaelPayne, 내 직책에서 직접 전화를 할 수도 있습니다. –