2011-09-30 6 views
2

작은 웹 애플리케이션의 JavaScript 변수 사용을 최적화하려고합니다. 각 함수가 Ajax 호출을 생성하고 쿼리 문자열을 반복적으로 사용하는 약 5 개의 함수가 있습니다. 각 함수 내부에 쿼리 변수를 선언해야합니까, 아니면 전역으로 선언 할 때 효율성이 향상 될까요? 내가 무슨 말의 매우 간단한 예는 다음과 같습니다JavaScript 변수를 효율적으로 선언하기

지역 선언

<script type="text/javascript"> 

    function queryOne() { 
     var queryString = "query arguments"; 
    } 

    function queryTwo() { 
     var queryString = "query arguments"; 
    } 
</script> 

글로벌 선언

<script type="text/javascript"> 
    var queryString; 

    function queryOne() { 
     queryString = "query arguments"; 
    } 

    function queryTwo() { 
     queryString = "query arguments"; 
    } 
</script> 

는 사용하는 주목할만한 효율 이점이있다인가 세계 선언 제도?

+1

: // jsperf.com/)를 찾아보십시오. –

답변

3

전역 선언은 로컬 범위의 변수를 찾은 다음 전역 범위를 찾는 데 시간이 오래 걸리므로 전역 선언이 실제로 느려지므로 로컬로 선언해야합니다. 게다가 변수 선언은 변수 이름을 검색 할 필요가 없을 수도 있습니다. 단순히 새로운 변수를 만들려고 시도 할 수 있습니다.

또한 미래에 코드가 추가되면 변수를 전역 적으로 선언하면 다른 코드로 덮어 쓰거나 충돌 할 수 있습니다.

실제로 쿼리 문자열이 한 번만 할당 된 경우 모듈 수준 변수로 약간의 시간을 절약 할 수 있습니다. 그러나 함수가 호출 될 때마다 쿼리 변수를 다시 할당하면 각 함수에 쿼리 변수를 로컬로 만드는 시간을 확실히 절약 할 수 있습니다.

0

깔끔함으로 묶을 수 있습니다.

var MyApp = { 
    queryString: null, 
    queryOne: function() { 
     print(this.queryString); 
    }, 
    queryTwo: function() { 
     print(this.queryString); 
    } 
} 
. 
MyApp.queryString = "foo=boob"; 
. 
a = MyApp.queryOne(123); 
b = MyApp.queryTwo(456); 
나는 대부분의 시간은 AJAX 요청에 소요되지만, 당신은 항상 [jsperf] (HTTP에 대한 벤치 마크를 설정할 수 있습니다, 특히 이후 눈에 띄는 효율성의 이점이있을 거라고 생각하지 않습니다
관련 문제