function jjj(asi) {
asi=3;
}
jjj();
console.log(asi);
在这里,我认为
asi
是全局变量,但是在运行此代码时,它给出的是asi
未定义。根据书籍和官方文档,我已经研究过,如果您提到的变量名不带关键字var,那么它将变为全局变量,因此我认为同一规则也适用于asi变量
最佳答案
在这里,我认为asi是全局变量,但是在运行此代码时,它给出的asi没有定义
如果您未将其声明为参数,则将创建一个隐式全局,例如:
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);