2010-05-07 9 views
4

나는이자가 실행 자바 스크립트 함수 내에서 정의 된 Vector 변수가 왜 var 변수를 필요로하지 않는지 궁금했다. 이것은 명명 된 함수를 만들기위한 다른 유형의 구문입니까? 이렇게하면 Vector를 다른 함수의 인수로 전달할 수 없습니까?Javascript 함수 정의

(function() { 
    Vector = function(x, y) { 
     this.x = x; 
     this.y = y; 

     return this; 
    }; 

    //...snip 
})() 

답변

2

Vector을 정의하면 폐쇄 범위 내에서 만 생성됩니다. 종결 밖에서는 이용할 수 없습니다.

(function() { 
    var Vector = function(x, y) { 
     this.x = x; 
     this.y = y; 

     return this; 
    }; 

    function Vector() { 
     // blah 
    }; 

    //...snip 
})() 

var something = new Vector() // ERROR :< 

아무 것도 "var"키워드가 필요하지 않습니다. 그것을 사용하여 변수가 사용 가능한 범위를 정의합니다. 사용하지 않으면 변수가 전역 범위에 만들어집니다.

+0

모두에게 도움을 주셔서 감사합니다. 아마도 VS2008 JS intellisense와 관련된 문제 일 것입니다. 하지만 어떤 이유로 벡터가 자체 실행 기능 외부에 나타나지 않습니다 ... – Pierreten

2

var없이 변수를 정의하면 전역 변수가됩니다.

3

위의 코드 구문을 사용하면 Vector가 네임 스페이스의 전역 변수가됩니다. 이는 아마도 생성자로 사용되기 때문에 괜찮을 수 있습니다.

전역 이름 공간에 추가하는 것을 권장하지 않습니다. 사실 requirejs을 모듈 식 JS로 작업하는 아주 좋은 방법으로 살펴보십시오.

1

Vector은 현재 thiswindow에 첨부됩니다. 최소한 당신이 제시 한 코드에서, 자기 수행 기능을 둘러싸는 것이 필요하지는 않은 것 같습니다.