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

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

10-12 20:21