我在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/