首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于js解析实施有趣的事

2012-07-04 
关于js解析执行有趣的事前些天总监在群里发了两段代码:?var foo 1function bar() {if (!foo) {var foo

关于js解析执行有趣的事

前些天总监在群里发了两段代码:

?

var foo = 1;  function bar() {      if (!foo) {          var foo = 10;      }      alert(foo);  }  bar();  

?

?

?

var a = 1;  function b() {      a = 10;      return;      function a() {}  }  b();  alert(a);  

?

?

不测试,大家看输出的是什么?

1 楼 rimoer 2012-06-18   试了,谁知道,来解释下... 2 楼 liukemin 2012-06-18   rimoer 写道试了,谁知道,来解释下...
http://liukemin.iteye.com/blog/1562948 看这篇文章 3 楼 hwhoho2010 10 小时前   这个很有意思啊,呵呵 除了预编译,还有闭包的概念在里面

对于第一个例子,在预编译bar期间,由于foo还是undefined的,所以执行了var foo = 10;这句话,而var foo就变成了函数bar的局部变量,之前定义的foo是全局变量。所以你在执行bar()时,打印的是局部变量foo(即 foo=10)而不是全局变量foo = 1
对于第二个例子,意思差不多,不过这次不但改变了a为局部变量,而且连a的类型也改了

热点排行