function jjj(asi) {
asi=3;
}
jjj();
console.log(asi);
在这里,我认为 asi
是一个全局变量,但在运行此代码时,它给出了 asi
未定义。
根据书籍和官方文档,我研究过,如果您在没有关键字 var 的情况下提到变量名称,那么它就会成为全局变量,所以我认为同样的规则也适用于 asi 变量
最佳答案
here I am thinking that asi is a global variable but while running this code it is giving that asi is not defined
如果您没有将其声明为参数,则会创建一个隐式全局变量,例如:
function jjj() {
// ^---------- removed `asi` here
asi = 3;
}
jjj();
console.log(asi);
请注意,隐式全局变量是一个非常糟糕的主意(出于某种原因,我将关于它们的博客文章称为 The Horror of Implicit Globals ),您应该使用 strict mode让他们犯下他们本来应该犯的错误:
"use strict";
function jjj() {
asi = 3; // ReferenceError: asi is not defined
}
jjj();
console.log(asi);
关于javascript - 没有关键字 var 的 JavaScript 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49022581/