我在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
答案 0 :(得分:1)
假设您是JavaScript引擎,请从上至下读取以下代码:
numPrinter
函数。目前没有()
,因此numPrinter
仅被定义但未被调用。console.log(i);
。在这里调用它会导致ReferenceError: i is not defined
,因为numPrinter
尚未被调用,因此i
仍无法访问。numPrinter();
,在这里,JS引擎读取()
并调用numPrinter
函数。现在,我们可以访问i
,因为未声明的变量始终成为全局变量。console.log(i);
在30
函数之外是全局可访问的,因此第二个i
会被读取并打印出numPrinter
的结果。答案 1 :(得分:-1)
由于js中的默认变量是全局变量,因此如果您将smth编写为:
let i = 30
在您的函数中,它将是本地的