用var分散声明变量会出错

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

posted @ 2014-12-03 19:12  ^cherish~  阅读(116)  评论(0编辑  收藏  举报