繁体   English   中英

为什么函数内的javascript全局变量显示错误?

[英]why does a javascript global variable within function show an error?

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


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

return i;没有return i; numPrinter();

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的结果,因为在numPrinter函数之外可以全局访问i

默认情况下,js中的变量是全局变量,因此如果您将smth编写为:

let i = 30

在您的功能中,它将是本地的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM