복붙노트

[NODEJS] 어떤 범위에서 모듈 변수는 Node.js를에 저장됩니다?

NODEJS

어떤 범위에서 모듈 변수는 Node.js를에 저장됩니다?

해결법


  1. 1.명시 적 module.exports에 할당하지 않는 한 변수는 글로벌 공간 (즉, 윈도우)에 할당 기본적으로있는 브라우저는 달리 노드에서 변수는 모듈 (파일)로 범위가된다.

    명시 적 module.exports에 할당하지 않는 한 변수는 글로벌 공간 (즉, 윈도우)에 할당 기본적으로있는 브라우저는 달리 노드에서 변수는 모듈 (파일)로 범위가된다.

    사실, 당신이 노드 myfile.js을 실행하거나 ( 'somefile.js') 파일의 코드는 다음과 같이 포장되어 필요로하는 경우 :

    (function (exports, require, module, __filename, __dirname) {
         // your code is here
    });
    

  2. 2.다른 모든 응답은 100 % 정확하지만 온다 오프 Node.js를 또는 자바 스크립트를 배우기 시작하는 동안 나는 구글을 통해이 가로 질러 경우 누구의 Node.js를 응용 프로그램 내에서 범위의 확장 / 최종 목록을 추가 할 것이라고 생각 :

    다른 모든 응답은 100 % 정확하지만 온다 오프 Node.js를 또는 자바 스크립트를 배우기 시작하는 동안 나는 구글을 통해이 가로 질러 경우 누구의 Node.js를 응용 프로그램 내에서 범위의 확장 / 최종 목록을 추가 할 것이라고 생각 :

    아무거나는 모든 파일에서 var 키워드 어디서나 노드 서버의 동일한 인스턴스에서 실행에서 액세스 할 수없이 선언

    // foo.js
    bar = 'baz';
    
    
    // qux.js
    console.log(bar); // prints 'baz'
    

    이 앱이 강하게 만들기 때문에이 널리, 나쁜 생각으로 간주되어 주 '당신이 운동을 공개 foo.js에있을 거라고 coupled'- 의미 왜 바 ='qux.js에서 바즈 '

    뭐든지 최고 레벨 (하지 기능이나 목적, 또는 기타 블록 내부)는 Node.js를 파일의 모듈 범위에 있고, 같은 파일 내에서 어디서나 액세스 할 수 있습니다에서 var 키워드로 선언하지만,하지 않습니다 어디서나 존재 그밖에:

    // foo.js
    var bar = 'baz';
    console.log(bar); // prints 'baz'
    
    
    // qux.js
    console.log(bar); // prints 'undefined'
    

    무엇이든은 다른 곳에서 해당 함수 내에서 액세스, 그리고 것입니다 함수 내에서 키워드 var에를 사용하여 선언 :

    // foo.js
    function myFunction() {
      var bar = 'baz';
      console.log(bar); // prints 'baz'
    }
    
    function myOtherFunction() {
      console.log(bar); // prints 'undefined'
    }
    
    
    
    // qux.js
    console.log(bar); // prints 'undefined'
    

    자바 스크립트는 함수 스코프이다. 기타 (블록 범위) 언어와는 달리, 변수는 함수 내에서 블록에서 선언 그 부모 함수에 다른 곳에서 액세스 할 수 있습니다. 당신은 루프 내부에 새로운 변수의 내부를 선언하는 경우 예를 들어, 그 루프의 외부에서 액세스 할뿐만 아니라, 한 상위 함수 내에서 아직도으로이 수단 있다는 :

    function myFunction() {
      while (thing === true) {
      var bar = 'baz';
      thing = false;
      }
      console.log(bar); // prints 'baz'
    }
    

    예를 들어, 당신이 '재 선언'기존 변수, 만약 그 변수 이름과 연관된 값이 새로운 선언의 범위 내에서 덮어 쓰기, 이미 사용 된 변수 이름과 함께 var 키워드를 사용합니다 :

    var bar = 'foo';
    console.log(bar) // prints 'foo'
    
    function myFunction() {
      var bar = 'baz';
      console.log(bar);
    }
    myFunction(); // prints 'baz'
    console.log(bar) // prints 'foo'
    

  3. 3.노드는 모듈 (에서만 코드 도달하고 있으므로,)로 범위가되는 변수를 생성하는 모듈의 VAR = ABC하므로 '123'모듈의 범위를 갖는다.

    노드는 모듈 (에서만 코드 도달하고 있으므로,)로 범위가되는 변수를 생성하는 모듈의 VAR = ABC하므로 '123'모듈의 범위를 갖는다.

    또한 http://nodejs.org/api/globals.html#globals_global 참조


  4. 4.사람이 ECMA 사양이 질문에 대한 대한 호기심 경우 아주 오래된 질문하고, 여기에 링크입니다

    사람이 ECMA 사양이 질문에 대한 대한 호기심 경우 아주 오래된 질문하고, 여기에 링크입니다

    그리고 (수입 모듈 제외) 모듈 변수에 대한 직접 액세스 할 방법이 없다 :

  5. from https://stackoverflow.com/questions/15406062/in-what-scope-are-module-variables-stored-in-node-js by cc-by-sa and MIT license