2017-09-11 7 views
0

サブライムテキスト3でアプリケーションを実行したときに、Node.jsで関数が呼び出された後でグローバル変数が変更されません。私がbashで実行すると、期待どおりに変更されます。 「global.firstname = 'David'」を「window.firstname = 'David'」に置き換えてChromeのコンソールで実行すると、予想どおりに変更されます。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 

のNode.jsと私のグローバル変数を更新する「global.firstname = 'デビッド」文は崇高なテキスト3で構築されていないのはなぜ最終的に、私は出力

// Gene Holmes 
// David 

にそれをしたいです?

+1

グローバルオブジェクトには名前がありません。それは「グローバル」ではなく、「ウィンドウ」でもありません。文字通りグローバルオブジェクトを指す変数はありません。グローバルオブジェクトに直接アクセスする唯一の方法は、 'this'トリッキーを使用することですが、厳密なモードでは機能しません。幸いにも、グローバル変数を操作するためにグローバルオブジェクトにアクセスする必要はありません。 – slebetman

答えて

2

、それが保存されている関数内でこの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つの変数を同じ名前で使用するのはなぜですか?

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);

関連する問題