JavaScript中Function Declaration与Function Expression

A:

have_it();
function have_it(){
         alert("alert");
}

 B:

have_it();
var have_it = function{
   alert("alert2");
}

 造成以上2种不同提示的原因是:JavaScript是一种解释型语言,函数声明会在JavaScript代码加载后、执行前被解释,而函数表达式只有在执行到这一行代码时才会被解释。而代码B在执行have_it()还未存在Function object和变量have_it,因为JavaScript在第一次使用某变量时会建立此变量,所以此处建立变量have_it,但其值时 undefined,未引用任何对象,将其作为函数来调用当然会出错。


除了什么时候可以被访问到外,JavaScript中的Function Declaration与Function Expression两种语法其实是等价的。另外,大多数浏览器支持将两种语法一起使用,如:

//除Safari外正确
var func = function func(){
}

 

但是以上语法在Safari上会报错。因此为了浏览器兼容性考虑,任何时候都不要合并使用两种语法。



截取段意自http://www.cnblogs.com/leoo2sk/archive/2011/01/16/function-declaration-and-expression.html

posted @ 2011-12-25 01:13  xallllsx  阅读(193)  评论(0编辑  收藏  举报