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

转载于:https://www.cnblogs.com/xsser/archive/2011/12/25/2300795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值