摘要: 首先,看看下面一个js例子,你觉得会输出什么呢? function fn(a){ a(); function a(){ console.log(2); } var a = function(){ console.log(3); } } fn(function(){console.log(1)}); 如果你看不出来,可以copy到浏览器中试试喔。   本人已经在IE,Firefox,360浏览器下测试过,这段代码都输出2。这时,一些人就会有疑问,为什么呢,为什么不是1和3呢,其实,是这样的: var a = function(){console.log(3);}是预先编译好的,参数function(){console.log(1)}是在创建执行环境时创建的,而function a(){ console.log(2);}是 在运行时即时编译的,所以,参数a覆盖var a, function a()又覆盖参数a,所以最后打印2。可明白? 阅读全文
posted @ 2014-01-15 10:46 Tony-Tse 阅读(1805) 评论(12) 推荐(3) 编辑