a = "global";
function func () {
alert(a); // undefined
var a = "local";
alert(a); // local
}
func();
javascript语言有预编译的过程,在此过程,将所有的var 声明的变量(注意是声明而不是赋值)全部提到 代码块最上边,
虽然 a = "global" 是全局的,但是, 在func()的代码块中,会将var a;提到func() 代码块最上边,同时也会将全局的 a="global"覆盖,
所以,第一个alert输出的是undefined,第二个alert输出的是local
时间: 2024-10-11 22:16:48