码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中两种定义函数方式的差别以及函数的预编译效果

时间:2014-11-04 17:24:45      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:javascript函数预编译

我们知道在javascript中定义函数的方式有以下两种:

function mm(){ }

这种形式是声明一个函数,跟 var 声明一个变量机制一样,脚本在解释执行之前会做预编译处理。

 

var mm = function(){ }

这种形式是对一个变量赋值,虽然也做预编译,但仅仅只是给 mm 事先变量分配一个内存空间,而没有做初始化。

代码1:

 alert(a);//打印函数a的内存
 alert(b);//undefined
 alert(c);//JS报错:“c”未定义 
 function a()
 {
 
 }
 
 var b = function(){};

 

代码2:

 func(); //2
 func = function() {alert(1);};
 func(); //1
 function func() {alert(2);};
 func(); //1


可见:

Javascript并非完全的按顺序解释执行,而是在解释之前会对Javascript进行一次“预编译”。第一种方式定义的函数,javascript允许在函数定义之前被使用;第二种方式定义的函数,不能提前使用,因为其值是undefined。 

javascript中两种定义函数方式的差别以及函数的预编译效果

标签:javascript函数预编译

原文地址:http://blog.csdn.net/aitangyong/article/details/40787367

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