【问题标题】:Why won't my global variable update after this function is called in Node.js?为什么在 Node.js 中调用此函数后我的全局变量不会更新?
【发布时间】:2023-03-19 15:50:01
【问题描述】:

当我在 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 构建更新我的全局变量?

【问题讨论】:

  • 在 node.js 中,全局对象没有名称。它不是“全局的”,也不是“窗口”。从字面上看,没有可用的变量指向全局对象。直接访问全局对象的唯一方法是使用 this 诡计,但这在严格模式下不起作用。幸运的是,您无需访问全局对象即可使用全局变量。

标签: javascript node.js sublimetext3


【解决方案1】:

要在函数中使用全局变量,您只需使用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.

【讨论】:

    【解决方案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);

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-08-20
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        相关资源
        最近更新 更多