javascript中不带关键字var的作用域 功能jjj(asi){ asi=3; } jjj(); 控制台日志(asi);

javascript中不带关键字var的作用域 功能jjj(asi){ asi=3; } jjj(); 控制台日志(asi);,javascript,scope,Javascript,Scope,在这里,我认为asi是一个全局变量,但在运行此代码时,它给出了未定义的asi 根据书籍和官方文件,我已经研究过,如果您提到变量名而不使用关键字var,那么它将变为全局变量,因此我认为同样的规则也适用于asi变量。在您的情况下,函数参数将被重新分配一个新值 功能jjj(asi){ asi=3//函数参数将具有新值 mno=4//这将是一个全局变量 } jjj(); 控制台日志(asi); 控制台日志(mno)在您的例子中,函数参数被重新分配一个新值 功能jjj(asi){ asi=3//函数参

在这里,我认为
asi
是一个全局变量,但在运行此代码时,它给出了未定义的
asi


根据书籍和官方文件,我已经研究过,如果您提到变量名而不使用关键字var,那么它将变为全局变量,因此我认为同样的规则也适用于asi变量。在您的情况下,函数参数将被重新分配一个新值

功能jjj(asi){
asi=3//函数参数将具有新值
mno=4//这将是一个全局变量
}
jjj();
控制台日志(asi);

控制台日志(mno)在您的例子中,函数参数被重新分配一个新值

功能jjj(asi){
asi=3//函数参数将具有新值
mno=4//这将是一个全局变量
}
jjj();
控制台日志(asi);
控制台日志(mno)
在这里,我认为asi是一个全局变量,但在运行这段代码时,它给出了asi没有定义的结论

如果不将其声明为参数,则将创建一个隐式全局,例如:

函数jjj(){
//^------删除此处的'asi'
asi=3;
}
jjj();
控制台日志(asi)
在这里,我认为asi是一个全局变量,但在运行这段代码时,它给出了asi没有定义的结论

如果不将其声明为参数,则将创建一个隐式全局,例如:

函数jjj(){
//^------删除此处的'asi'
asi=3;
}
jjj();

控制台日志(asi)您没有定义全局变量。您正在重新定义函数的参数。@xufox我认为该参数是变量,我们可以在代码的其他部分使用它。您的意思是在函数之外使用参数
asi
?不,这绝对不可能。您没有定义全局变量。您正在重新定义函数的参数。@xufox我认为该参数是变量,我们可以在代码的其他部分使用它。您的意思是在函数之外使用参数
asi
?不,这绝对不可能。