티스토리 툴바

Javascript performance -Scope chaining-

View Comments

보통 function 안에 무심코 document 객체와 같은 global에 선언된 객체를 사용 하게 됩니다. 하지만 이러한 방신은 socpe chaining이라는 기법(배열) 검색을 하게 됩니다. 당연히 현재 function과 멀리 떨어진 객체를 사용하게 되면 더욱 더 많은 검색을 하기 때문에 성능이 떨어지게 됩니다. 





따라서 documnet처럼 global 객체를 사용하게 될 경우에는 간단한 지역변수(var)로 선언하여 사용 해야 합니다. 그렇게 되면 Activation object(현재 객체)에 저장된 변수를 사용하기 때문에 Socpe chaining이 일어 나지 않습니다. 이러한 방법으로 하면 좀 더 성능을 향상 시킬수 있습니다.

-보조 설명 with- 
fucntion Activation(){
     var a = 1;
     with(.....){
            alert(a);
     }
}

with는 간편하고 한눈에 보기에는 Activation object에서 참조하는 것처럼 보이지만 사실은 with object가 생성이 되게 됩니다. 그래서 Activation object(현재객체)에 선언된 지역변수(var)를 참조 할때도 Socpe chaining이 일어 나기 때문에 성능에 부담을 줍니다. 될 수 있으면 쓰지 않는게 좋습니다.
 따라서 with(){} 안에서 var a를 참조 할때도 Scope chaining이 일어 납니다. 

-소스코드-

저작자 표시

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

Newer Entries Older Entries