복붙노트

[JQUERY] 어떻게 자바 스크립트 / jQuery를 구문 작업 않습니다 (기능 (윈도우, 정의되지 않은) {}) (창)?

JQUERY

어떻게 자바 스크립트 / jQuery를 구문 작업 않습니다 (기능 (윈도우, 정의되지 않은) {}) (창)?

해결법


  1. 1.정의되지 않은 정상적인 가변적이며 정의 = "새로운 값"으로 간단히 변경할 수 ;. jQuery를 진짜로 정의되지 않은 지역 "정의되지 않은"변수를 만들고 그래서.

    정의되지 않은 정상적인 가변적이며 정의 = "새로운 값"으로 간단히 변경할 수 ;. jQuery를 진짜로 정의되지 않은 지역 "정의되지 않은"변수를 만들고 그래서.

    창 변수는 성능상의 이유로 지역 이루어진다. 자바 스크립트 변수를 조회 할 때, 먼저 지역 변수를 통과하기 때문에이 변수 이름을 찾을 때까지. 발견되지 때 그것이 전역 변수를 통해 필터까지, 자바 스크립트는 다음 범위 등을 통해 간다. 윈도우 변수가 지역 이루어진 경우 그래서, 자바 스크립트는 더 빨리를 찾아 볼 수 있습니다. 추가 정보 : 최대 속도 자바 스크립트 - 니콜라스 C. Zakas


  2. 2.찾으시는 주소가 없습니다

    찾으시는 주소가 없습니다

    인수로 정의되지 않은 선언하지만, 그것은 덮어 쓸 수 전역 범위의 변수는 단순히로는 항상 정의되어 있지 보장에 절대 값을 전달하지으로. 이것은 === 안전한 대안을 정의되지 않은 만드는 대해서 typeof == '정의', 몇 가지 문자를 저장하는 것이다. 또한 몇 가지 더 많은 문자를 저장, 예를 들어 U 단축 할 수있다 정의되지 않은 한, 코드를 더 minifier 친화적한다.

    창문

    http://jsperf.com/short-scope : 인수로 창을 전달하면 성능에 영향을 미치는 지역 범위에 복사본을 유지합니다. 창에 대한 모든 액세스는 이제 범위 체인 한단계 더 적은 여행을해야합니다. 미정와 마찬가지로 로컬 복사본은 다시 더 공격적으로 축소를 허용한다.

    전역 창 개체가 없다 - 이것은 jQuery를 개발자의 의도되지 않았을 수 있지만, 창에 전달하면 라이브러리가 더 쉽게 예를 들어 Node.js를 들어, 서버 측 자바 스크립트 환경에 통합 할 수 있습니다. 이러한 상황에서, 단 하나의 라인은 또 하나 윈도우 개체를 대체하기 위해 변경해야합니다. (도서관 등이 jsdom으로이 작업을 수행 할 수 있습니다) jQuery를의 경우, 모의 윈도우 객체를 생성 할 수 있으며, HTML 스크래핑하기위한 목적에서 통과시켰다.


  3. 3.다른 사람은 정의되지 않은 설명한있다. 정의되지 않은 어떤 값으로 다시 정의 할 수있는 전역 변수와 같습니다. 이 기술은 사람 = 10 곳을 정의되지 않은, 말을 쓴 경우 깨는에서 정의되지 않은 모든 검사를 방지하는 것입니다. 전달되지 않습니다 인수는 실제 정의되지 않은 변수의 값에 관계없이 정의되지 보장됩니다.

    다른 사람은 정의되지 않은 설명한있다. 정의되지 않은 어떤 값으로 다시 정의 할 수있는 전역 변수와 같습니다. 이 기술은 사람 = 10 곳을 정의되지 않은, 말을 쓴 경우 깨는에서 정의되지 않은 모든 검사를 방지하는 것입니다. 전달되지 않습니다 인수는 실제 정의되지 않은 변수의 값에 관계없이 정의되지 보장됩니다.

    패스 창 이유는 다음 예와 함께 설명 될 수있다.

    (function() {
       console.log(window);
       ...
       ...
       ...
       var window = 10;
    })();
    

    콘솔은 무엇을 기록 하는가? 윈도우 객체 오른쪽의 값? 잘못된! 10? 잘못된! 그것은 정의되지 않은 기록합니다. 자바 스크립트 인터프리터 (또는 JIT 컴파일러는) 그것을 이런 식으로 재 작성 -

    (function() {
       var window; //and every other var in this function
    
       console.log(window);
       ...
       ...
       ...
       window = 10;
    
    })();
    

    인수로 창 변수를 가져올 경우, 더 VAR 따라서 어떤 놀라움이 없다.

    jQuery를가 그 일을하는 경우는 모르겠지만, 당신이 어떤 이유로 든 함수에 창 지역 변수의 어디를 재정의하는 경우, 그것은 글로벌 범위에서 빌릴 수있는 좋은 아이디어이다.


  4. 4.창 그건 그냥 경우에 누군가가 IE의 창 개체를 재정의하기로 결정처럼 전달되어, 나는 그것의 나중에 어떤 방법으로 다시가 할당 된 경우, 정의되지 않은에 대해 동일한 가정합니다.

    창 그건 그냥 경우에 누군가가 IE의 창 개체를 재정의하기로 결정처럼 전달되어, 나는 그것의 나중에 어떤 방법으로 다시가 할당 된 경우, 정의되지 않은에 대해 동일한 가정합니다.

    해당 스크립트의 상단 창은 인수 "창"글로벌 윈도우 참조하고이 폐쇄 내부의 코드가 사용하는 어떤 것을 더 현지의 인수의 이름을 지정합니다. 마지막 창은 실제로 희망이 그렇게하기 전에 창을 망쳐하지 않은 것입니다 ...이 경우, 첫 번째 인수를위한 윈도우의 현재의 의미를 전달하는 것을 지정하는 것입니다.

    이것은이 범위 밖에서 jQuery를 이외의 다른 의미하더라도, 그래서 당신은 여전히 ​​$를 사용할 수있는 코드의 대부분을 취급) (.noConflict 플러그인, jQuery를에 사용되는 가장 일반적인 경우를 보여 생각보다 쉽게 ​​할 수있다 :

    (function($) {
      //inside here, $ == jQuery, it was passed as the first argument
    })(jQuery);
    

  5. 5.1000000 반복 테스트. 현지화 이런 종류의 성능에 영향을 미치지 아니합니다. 1000000 개 반복에서조차 하나의 밀리 초. 이것은 단순히 쓸모가 없다.

    1000000 반복 테스트. 현지화 이런 종류의 성능에 영향을 미치지 아니합니다. 1000000 개 반복에서조차 하나의 밀리 초. 이것은 단순히 쓸모가 없다.

  6. from https://stackoverflow.com/questions/2716069/how-does-this-javascript-jquery-syntax-work-function-window-undefined by cc-by-sa and MIT license