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

标签 javascript global-variables

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


它是a global variable ..global .. 而且我也不明白怎么global variablenumPrinter() 之后工作

没有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 的结果因为i可以在 numPrinter 之外全局访问功能。

关于javascript - 为什么函数内的 javascript 全局变量显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54268227/

相关文章:

javascript - "SyntaxError: Unexpected token < in JSON at position 0"

javascript getOwnPropertyNames 方法

opencv - OpenCV和C++:全局cv::Mat对象返回错误的值

php - 访问 "CSS"中的全局变量(style.php)

javascript - 如何将我的 javascript 代码输出为 HTML?

javascript - AngularJS 中使用不同参数对同一 API 函数进行多次异步调用

javascript - 无浏览器、面向 Ant 任务的 Javascript 单元测试?

javascript - 访问可变区间

c - 跟踪 C 中与局部变量同名的全局变量

python - 我应该用 Python 命名我的全局模块?