为什么函数中的 JavaScript 全局变量显示错误



我在Javascript的numPrinter函数中放置了一个全局变量。
但是如果我在放console.log(i);之前不放numPrinter();


a global variable.. global..而且我不明白global variablenumPrinter()之后是如何工作的

numPrinter();内没有return i;

var numPrinter = function(){
    i = 30;
};
console.log(i);  // ReferenceError: i is not defined
numPrinter();
console.log(i);  // 30

想象一下,你是 JavaScript 引擎,从上到下阅读这段代码:

  1. 我们读到的第一件事是numPrinter函数。不存在(),因此仅定义numPrinter而不调用。
  2. 继续向下,读取第一个console.log(i);。在此处调用它会导致ReferenceError: i is not defined,因为numPrinter尚未调用i因此尚无法访问。
  3. 再往下,我们会遇到numPrinter(); 在这里,JS 引擎读取()并调用 numPrinter 函数。我们现在可以访问i因为未声明的变量总是变成全局变量。
  4. 最后,读取第二个console.log(i);并打印出30的结果,因为i可以在numPrinter函数之外全局访问。
默认情况下,

js 中的变量是全局的,所以如果你像这样写 smth:

let i = 30

在您的函数中,它将是本地的

相关内容

  • 没有找到相关文章

最新更新