2010-03-10 3 views

답변

3

두 가지 방법은이 정말 비슷하지만, 전역 변수가 생성되는 방법에는 약간의 차이가 있습니다.

var myFunc = (function(){ 
    //do something 
})(); 

delete window.myFunc; // false 

동안 다음 var 문을 사용하여 두 번째 방법에서

가, 전역 객체의 비 삭제 가능한 속성으로 myFunc 변수를 생성합니다, var 문을 명시 적으로 내부 {DontDelete} 속성, 예를 설정 첫 번째는 삭제 될 수 있습니다
(function(){ 
    var myFunc = (function(){ 
     //do something 
    })(); 
    window.myFunc = myFunc; 
})(); 

//... 
delete window.myFunc; // true 

당신이 방화범 위를하려고하면

이 모두 삭제 될 수 있습니다, 그게 방화범 콘솔에서 코드 평가 ( eval)를 사용하기 때문이다.

위의 예 here을 확인할 수 있습니다.

권장 기사 :

+0

당신이 원하는 것, 또는 필요의 손에

(function(){ var helperFunc = function() { //do something else } var myFunc = function(){ //do something helperFunc(); } window.myFunc = myFunc; })(); 

클리너 코드 결과를 전역 객체에서 무언가를 삭제하려면? –

+0

@Russ : 일반적으로 'null'로 설정하는 것이 일반적입니다. – CMS

0

의미 적 아무것도. 그러나 첫 번째 예제에서는 코드를보다 쉽게 ​​읽을 수있는 "개인"함수를 사용할 수 있습니다.

이 예를 가지고

: 좋은 개발자 그래서

관련 문제