函数声明和函数表达式

可能在其他语言中看起来有点奇怪,但是在javascript

中,函数确实有两种含义,第一种和其他语言相似,

函数是一段可以反复调用执行的代码。但另一方面

javascript函数也是一种对象,他可以拥有属性和方法

就和一般的对象一样。这也意味着函数在javascript是

如此的重要和多变。因为他是对象,那么他自然可以和

其他对象一样,赋值给一个变量,也就是被引用,另外

他也可以作为另一个函数的返回值或者参数。那么函数

声明和函数表达式有什么区别呢?其实来说,两者并

没有本质的区别,都能创建一个函数对象,只不过函数

表达式是一个完整的语句,但是函数表达式则必须是一个

表达式的一部分,有时他们是没有区别的,区分他们要看

他们所处上下文,比如在一个赋值语句中他是一个表达式,

否则就是一个声明。声明和表达式的区别在于什么呢?

首先我们说一个函数声明会被无条件的提前,即可以提

前调用,但函数表达式则需要执行到他是才能创建一个

函数对象。另外,由于他是表达式的一部分,因此其

作用域也是受限的。比如var fun=function a(){};你只能

依靠fun来调用这个函数对象,a在外部是不可见的。但是

可以在其内部使用,比如var fun=function a(){alert(a.name)}。

我们要时刻记住的是,函数是一个特殊的对象,他会有一个不

公开或不常用的属性叫name;比如你创建一个函数对象,如果

加了标识符,这个标识符就会成为他的name。比如你直接声明

一个函数,function a(){};那么你创建了一个函数对象,其name

属性叫a;另外在表达式中,比如var fun=function(){};fun只是对函数

对象的引用,这个函数对象是一个匿名函数,因此其name属性是

一个空字符串。而不是fun.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值