나는 현재 JS에서 범위 지정 및 호이 스팅에 대한 몇 가지 실험을하고 있습니다. 여기에 다른 방식으로 나를 혼란스럽게하는 두 가지 예가 있습니다. 먼저 부모라는 변수에 익명 함수를 할당했습니다. 분명히 반환 된 자식 함수는 외부 함수 범위에 액세스 할 수 있습니다. 그래서 그것은 텍스트 변수에 접근 할 수 있습니다. 그것은 명확하고 쉽습니다. 여기에 코드가 있습니다 ..
var parent = function() {
var text = 'i can access the container';
return function() {
alert(text);
}
}();
parent();
나중에 메서드가있는 함수 대신 개체를 반환하고 싶었습니다.이 메서드는 즉시 호출 된 함수의 본문에있는 것이 아니라 반환 된 개체 내부에 정의되어 있습니다. 문자열 값.이 변수가이 개체 리터럴 메서드의 범위에있는 이유는 무엇입니까 ??
var parent = (function() {
var text = 'private variable';
return {
prop: 'i am the property',
method: function() {
alert('i can access ' + text);
}
}
})();
parent.method();
JavaScript에서 객체 리터럴은 새 범위를 생성하지 않고 함수 만 생성 합니다. 따라서 IIFE에서 선언 된 모든 변수는 method
개체 리터럴 의 함수에서 사용할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다