func1(); var a = "hello"; function func1(){ var b = "world"; b = a; alert(b); if(false){ var a = "hahaha"; } } 修改后 var a = "hello"; function func1(){ //方法声明放到前面 var b; //局部变量的所有声明都提前, var a; b = "world"; b = a; alert(b); if(false){ a = "hahaha"; //只有赋值的时候,才在真实的位置 } } func1();
1.javascript在运行前会有预编译期,会把声明提前(不管这个生命是否真的会运行)
2.局部变量的优先权大于全局变量
chrome自定义大小:插件