반응형
JavaScript 코드를 실행하는 어색한 방법
이 질문에 이미 답변이 있습니다.
Flask 애플리케이션에서 Google+ 로그인을 구현하기위한 Google 자습서 에서 개발자가 JavaScript 코드를 실행하는 데 종종 어색한 방법을 사용한다는 것을 발견했습니다.
하는 대신
var a = foo(bar);
나는 이것을 본다 :
var a = (function() {
return foo(bar);
})();
이상하게하는 이유는 무엇입니까?
이것은 좋지 않은 예입니다. 다음을 고려하세요:
var a = (function(){
var ret = {};
ret.test = "123";
function imPrivate() { /* ... */ }
ret.public = function() { imPrivate(); }
return ret;
})();
a
변수 테스트 및 공용 함수가 포함되지만 imPrivate에 액세스 할 수 없습니다. 이것은 공용 변수와 개인 변수를 처리하는 일반적인 방법입니다.
이 함수가 괄호와 괄호로 묶여있는 이유를 참조하십시오 . 더 많은 정보를 위해서.
var a = (function() {
return foo(bar);
})();
이 경우 이것은 정말로 불필요하지만 이것은 잘못된 것이 아니며 오류가 발생하지 않습니다.
그러나 IIF
때로는 다음과 같이 사용합니다 module pattern
.
var a = (function() {
/* some other code in own scope */
return foo(bar);
})();
이 경우 IIF
는 단지 module
무언가를 외부로 내보내는 것입니다.
클로저 함수는 함수의 일부 속성 / 메소드를 캡슐화하는 데 사용됩니다. 다른 언어의 사적 / 공적 원칙과 매우 유사합니다.
이 주제에 대한 자세한 내용은 모듈 패턴 아래 에서 찾을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/21528187/awkward-way-of-executing-javascript-code
반응형
'code' 카테고리의 다른 글
세로 헤더가있는 HTML 테이블을 작성하는 가장 일반적인 방법은 무엇입니까? (0) | 2020.09.06 |
---|---|
PyPy, Django 및 PostgreSQL이 함께 작동하도록하려면 어떻게해야합니까? (0) | 2020.09.06 |
자동으로 모든 함수에 console.log 추가 (0) | 2020.09.06 |
파일이 있는지 확인하지만 콘솔에 404 오류가 표시되지 않도록합니다. (0) | 2020.09.06 |
"정적"또는 "외부"가없는 "인라인"이 C99에서 유용합니까? (0) | 2020.09.06 |