javascript函数声明和函数表达式的区别

出处: http://blog.sina.com.cn/s/blog_6e6e7adc01018cu8.html

定义一个函数,可以由好几种方法,其中最常用的就是函数声明和函数表达式,虽然都可以实现定义函数,但他们之间也会有区别。
下面咱们先看函数声明如何定义函数:

一个简单的例子:

function count(a,b){

 return a+b;

}

在这里,count作为函数名,其实就是一个指向了函数对象的指针。


如果用函数表达式来定义同样的函数:===>也就是,有“=”赋值的,就是函数表达式

var count = function(a,b){ return a+b;};

这里的count做为变量,也同样指向了函数对象。

因此在后续的调用中,效果是没有差别的;但是他们的区别在于解析器对这两种定义读取的顺序不同;

解析器会事先读取函数声明,并在执行后续的代码之前使之可以使用,即使你把函数声明放在代码的末端;

而对于函数表达式,解析器只有在读到函数表达式所在那行的时候才执行;

可以看下面代码的比较:

函数声明(顺利执行):

alert(count(10,10));

function count(a,b)

{

  return a+b;

}

函数表达式(报错):

alert(count(10,10))

var count = function(a,b){

return a+b;

};

从这里就能看出两者的区别了。

【个人总结】
1、函数声明js解析器会优先读取,确保在所有代码执行之前声明(提前声明)已经被解析;
2、函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析;
所以当使用函数声明的形式来定义函数时,可将调用语句写在函数声明之前,而函数天达式,这样做的话会报错,调用只能在函数表达式之后。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值