在Node.js中调用此函数后,为什么我的全局变量不会更新?

时间:2017-09-11 02:57:01

标签: javascript node.js sublimetext3

当我在Sublime Text 3中运行应用程序时,在Node.js中调用函数后,我的全局变量没有改变。当我在bash中运行它时,它会按预期更改。当我用“window.firstname ='David'”替换“global.firstname ='David'”并在chrome的控制台中运行它时,它会按预期更改。

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

为什么“global.firstname ='David'”语句不是用Sublime Text 3中的Node.js构建来更新我的全局变量?

3 个答案:

答案 0 :(得分:2)

要在函数中使用全局变量,只需将其定义为具有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.

答案 1 :(得分: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);




答案 2 :(得分:0)

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