2017-09-11 1 views
0

하위 텍스트 3에서 응용 프로그램을 실행할 때 Node.js에서 함수를 호출 한 후 내 전역 변수가 변경되지 않습니다. bash에서 실행할 때 예상대로 변경됩니다. "global.firstname = 'David'"을 "window.firstname = 'David'"으로 바꾸고 크롬 콘솔에서 실행하면 예상대로 변경됩니다. Node.js를 내 전역 변수를 갱신 "global.firstname = '다윗'"문이 숭고한 텍스트 3에 구축되지 않은 이유는 궁극적으로Node.js에서이 함수를 실행 한 후 전역 변수가 업데이트되지 않는 이유는 무엇입니까?

var firstname = 'Simon'; 

var addSurname = function(){ 

    var firstname = 'Gene'; 
    var surname = 'Holmes'; 
    var fullname = firstname + ' ' + surname; 
    global.firstname = 'David'; 
    console.log(fullname); 
}; 

addSurname(); 
console.log(firstname); 

// Gene Holmes 
// Simon 

, 내가 출력

// Gene Holmes 
// David 

에 원하는 ?

+1

node.js에서 전역 개체에는 이름이 없습니다. 그것은 "글로벌"이 아니며 "창"이 아닙니다. 말 그대로 전역 객체를 가리키는 변수는 없습니다. 전역 객체에 직접 접근하는 유일한 방법은 'this'라는 속임수를 사용하는 것이지만 엄격 모드에서는 작동하지 않습니다. 다행스럽게도 전역 변수로 작업하기 위해 전역 객체에 액세스 할 필요가 없습니다. – slebetman

답변

2

var firstname = 'Simon'; 
 

 
var addSurname = function(){ 
 

 
    var firstname2 = 'Gene'; 
 
    var surname = 'Holmes'; 
 
    var fullname = firstname2 + ' ' + surname; 
 
    firstname = 'David'; 
 
    console.log(fullname); 
 
}; 
 

 
addSurname(); 
 
console.log(firstname);
방금 ​​다음이 저장되어있는 함수 내에서이 VAR의 변경 후 동일한 VAR 이름을 사용 var 키워드를 글로벌로 정의해야하는 기능에 글로벌 VAR를 사용하려면 다시 글로벌 var에. 따라서 global. 또는 이와 비슷한 것을 사용할 필요가 없습니다.

var firstname = 'Simon'; 

var addSurname = function(){ 

    var firstnameTmp = 'Gene'; 
    var surname = 'Holmes'; 
    var fullname = firstnameTmp + ' ' + surname; 
    firstname = 'David'; 
    console.log(fullname); 
}; 

addSurname(); 
console.log(firstname);// Will output David. 
0

같은 이름의 변수 2 개를 사용하는 이유는 무엇입니까?