码迷,mamicode.com
首页 > 其他好文 > 详细

预编译期和执行期

时间:2016-07-15 17:22:45      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:预编译期 执行期

  在javascript中执行如下代码:      

            var a = 10;

            function outer(){

                alert(a);

                var a = 20;

            }

            outer();

   会产生一个奇怪的结果undefined.其实这是代码执行的两个过程及作用域的问题。

   代码执行的两个过程:

       预编译期:声明变量、定义函数、创建函数空间

       执行期  :变量赋值、语句执行

    对于以上代码,在预编译期,声明一个全局变量a,定义函数outer(),声明一个局部变量a;

  在执行期,执行outer(),执行alert(a),该语句会首先在outer()的局部环境中寻找a,于是找   到了预编译期的第二个a,由于alert(a)在var a = 20 之前,所以此时的这个a 是出于undefined状   态,所以结果就是undefined了。

预编译期和执行期

标签:预编译期 执行期

原文地址:http://9797673.blog.51cto.com/9787673/1826751

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!