정의되지 않은 전달의 목적은 무엇입니까?
나는 다음 jQuery
과 같이 모듈 정의에 사용되는 익명 함수에 매개 변수로 jQuery.UI
전달 undefined
과 같은 관련 키 노트 플러그인 을 발견했습니다 .
(function($, undefined) { ... })(jQuery);
또는 jQuery에서 권장하는 다른 플러그인 및 / 또는 다른 플러그인이 undefined를 매개 변수로 전달하지 않는 것으로 나타났습니다.
어리석은 질문 일 수 있지만 ...
어쨌든 항상 사용할 수 있어야하지 않습니까? 왜 그것을 전달합니까? 여기에 다른 목적이나 트릭이 있습니까?
그 이유는 두 가지입니다.
1) undefined
전역 개체 속성이 아닌 함수 범위의 변수 인 경우 축소자는이를 단일 문자로 줄여 더 나은 압축률을 얻을 수 있습니다.
2) ES5 * 이전 undefined
에는 쓰기 방지가없는 전역 개체의 속성이었습니다. 따라서 덮어 써서 이상하고 예기치 않은 동작이 발생할 수 있습니다. 다음과 같이 할 수 있습니다.
var test = 123;
undefined = 123;
if (test === undefined){
// this will actually be true, since undefined now equals 123
}
undefined
매개 변수를 전달하지 않는 함수 인수 (실제로 이름은 중요하지 않음)를 가지면 undefined
이 변수에 대해 "정의되지 않음"을 테스트 할 수 있는 변수가 있는지 확인할 수 있습니다.
Btw. undefined를 테스트하는 가장 안전한 방법은 다음과 같습니다.typeof ( var ) === 'undefined'
ECMA 스크립트 5, 세계의 호텔을 (*) undefined
, NaN
및 Infinity
읽기 전용되었다. 따라서 모든 최신 브라우저에서 일반적으로 채택됨에 따라-물론 IE 9를 제외하고-이러한 값을 덮어 쓰는 것이 더 이상 불가능했습니다.
이는 undefined가 항상임을 확인하기 위해 수행됩니다 undefined
. ECMAScript 사양의 이전 버전 (ECMAScript 5 이전)에서 undefined는 예약어가 아니라 일반 변수였습니다. 예를 들어 이전 브라우저에서는 다음과 같이 허용됩니다.
undefined = 2; // Assign a different value to undefined
// Now this statement would be true
if (undefined == 2)
따라서 undefined가 실제로 undefined인지 확인하려면 다른 "사악한"스크립트가 undefined를 다른 값으로 다시 할당 했더라도 undefined라고 호출하는 매개 변수를 만든 다음 함수를 호출 할 때 전달하지 않도록합니다. 해당 매개 변수에 대한 값-따라서 정의되지 않은 변수가 항상 함수 내에서 정의되지 않음을 확인할 수 있습니다.
따라서 jQuery의 경우 :
(function($, undefined) { ... })(jQuery);
그들은 jQuery를 전달하고 편의를 위해 $ 변수에 할당하지만 정의되지 않은 매개 변수에 두 번째 값을 전달하지 않으므로 undefined가 정의되지 않습니다.
최신 브라우저
최신 브라우저에서는 ECMAScript 5 사양에undefined
따라 구성 및 쓰기가 불가능한 속성입니다 .
undefined는 javascript의 예약어가 아니라 단순히 변수입니다. jQuery는 일부 나쁜 개발자가 자바 스크립트에서 undefined 값을 덮어 쓰는 경우 jQuery는이를 무시하고 값을 전달하지 않는 자체 변수 undefined를 설정합니다 (마지막의 자체 실행 (jQuery) 참조). 따라서 실제로 정의되지 않았습니다.
참고 URL : https://stackoverflow.com/questions/9602901/what-is-the-purpose-of-passing-in-undefined
'developer tip' 카테고리의 다른 글
전처리 단계없이 Qt는 얼마나 유용합니까? (0) | 2020.12.13 |
---|---|
정말, Git에서 병합하는 것이 SVN보다 쉬운 구체적인 예? (0) | 2020.12.13 |
자바 스크립트 : 배경 이미지 URL 가져 오기 (0) | 2020.12.12 |
루트에 상대적인 지시어 templateUrl 지정 (0) | 2020.12.12 |
github 페이지 블로그 (마크 다운)에서 disqus 댓글을 어떻게 사용하나요? (0) | 2020.12.12 |