码迷,mamicode.com
首页 > Web开发 > 详细

js 变量预编译

时间:2015-04-29 18:55:08      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

js是按照顺序执行的;

但是在js中会对var和function进行预编译;

        alert(show);
        function show(){
            var a;
        }

比如以上代码,alert就会输出function。

 

但是对于var的预编译,刚刚是自己理解错了

如下代码,a输出都是undefined。

b会直接报错,b is not defined。

   alert(a);
   alert(b);
   var a;

 

汇总下要点:

1.js在页面加载过程中顺序执行。但是分块预编译、执行。 
2.JS 在执行前会进行类似"预编译"的操作,而且先预声明变量再预定义函数。 
此时注意,是声明,不是定义,如:var a = 1; 在预编译中,只是执行了"var a"没有赋值,即在预编译结束时a 为undefined。 
3.(注意)并不是先全文编译完在执行,而是块编译,即一个script块中,预编译再执行,然后(按顺序)下一个script块,预编译再执行,但此时上一个块中的数据都是可以用的,但下一个块中的函数,声明的变量都是不可用的。 
4.变量没声明就引用,会报错,但对象方法,对象变量没声明,是undefined 
5.在函数中变量不声明就赋值,会被认为是全局变量,用var声明后为函数变量 
6.在执行函数时时也是先编译后执行,但要注意函数定义中(即大括号中)的代码即使有错只要函数不执行,就不会有影响,但一执行函数,开始函数预编译就会出错。

 

js 变量预编译

标签:

原文地址:http://www.cnblogs.com/wangsong1299/p/4466461.html

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