js编译原理

var name = 123;

function getName(){

  console.log(name);

  var name = 456;

}

getName();

输出undefined;

 

这是因为浏览器的解释器var name = 456虽然写法如此,解释的时候会解释为var name; name=456;其中声明变量提前至当前作用域最前面。当运行到getName时,代码等同:getName(){var name; console.log(name);name = 123} 输出undefine 详细请查阅 js编译原理

posted on 2015-03-16 20:12  tarrying  阅读(105)  评论(0)    收藏  举报