- [code] <script type="text/javascript">
- var a = "hello";
- b = "world";
- Test();
- function Test() {
- alert(a + " " + b);
- var a = "welcome";
- b = "china";
- alert(a + " " + b);
- }
- alert(a + " " + b);
- </script>[/code]
- [code] <script type="text/javascript">
- alert(a);
- alert(b);
- var a = "111";
- b = "111";
- </script>[/code]
当我们执行运行这段脚本时, 可以发现, 首先弹出 undefined, 然后回提示脚本错误, 提示 b 不存在. 由此就可以表明, a 在预编译的过程中就已经被创建并且初始化为 undefined, 而 b 却只能在实际运行时按顺序去解释. 其实在预编译后的 Javascript 代码可以近乎理解如下:
- [code]<script type="text/javascript">
- var a = undefined;
- alert(a);
- alert(b);
- a = "111";
- b = "111";
- </script>[/code]
- [code]function Test() {
- var a = undefined;
- alert(a + " " + b);
- var a = "welcome";
- b = "china";
- alert(a + " " + b);
- }[/code]
- [code]<script type="text/javascript">
- var a = "hello";
- b = "world";
- Test();
- function Test() {
- alert(a + " " + b);
- a = "welcome";
- b = "china";
- alert(a + " " + b);
- }
- alert(a + " " + b);
- </script>[/code]
- [code]<script type="text/javascript">
- var a = "hello";
- b = "world";
- Test();
- function Test() {
- alert(a + " " + b);
- var a = "welcome";
- var b = "china";
- alert(a + " " + b);
- }
- alert(a + " " + b);
- </script>[/code]
- [code]<script type="text/javascript">
- a = "hello";
- b = "world";
- Test();
- function Test() {
- alert(a + " " + b);
- var a = "welcome";
- b = "china";
- alert(a + " " + b);
- }
- alert(a + " " + b);
- </script>[/code]
应该是 undefined world,welcome china,hello china.
来源: http://www.qdfuns.com/article/11377/cf7cb434bd9f7daf76aafcf16c7eb6d3.html