我在 Javascript 的 numPrinter 函数中放置了一个全局变量。
但如果我不输入numPrinter();
放置前console.log(i);
它是a global variable
..global
..
而且我也不明白怎么global variable
在 numPrinter()
之后工作
没有return i;
numPrinter();
内
var numPrinter = function(){
i = 30;
};
console.log(i); // ReferenceError: i is not defined
numPrinter();
console.log(i); // 30
最佳答案
想象一下你是 JavaScript 引擎,从上到下阅读这段代码:
- 我们读到的第一件事是
numPrinter
功能。没有()
现在,所以numPrinter
仅定义但未调用。 - 继续往下,第一个
console.log(i);
已读。在这里调用它会导致ReferenceError: i is not defined
因为numPrinter
仍然没有被调用,所以i
尚无法访问。 - 再往下,我们遇到
numPrinter();
这里,JS引擎读取()
并调用numPrinter
功能。我们现在可以访问i
因为未声明的变量总是成为全局变量。 - 最后是第二个
console.log(i);
读取并打印出30
的结果因为i
可以在numPrinter
之外全局访问功能。
关于javascript - 为什么函数内的 javascript 全局变量显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54268227/