js函数声明与函数表达式

function a(){}这种叫函数声明, function(){},var fn=function(){},var fn=function a(){}这种是函数表达式,var fn=function a(){}中的a相当于一个函数局部变量,只能在这个函数内部使用,如var fn = function fib(n){if(n<=1){return 1}else{return fib(n-2)+fib(n-1)}}, 在函数外部只能使用fn不能使用fib。

函数声明会被js引擎提前(hoist),因此函数调用可以写在声明前面,如fn();function fn(){}正常执行,而fn();var fn=function(){}错误。函数表达式只有在解释器执行到那一行时才进行解释。

函数声明可以转变为表达式,如上面的var fn=function a(){}即被转变为表达式,同时样~ + - !和&&,()等运算符也可以。经常见到js代码中!function a(){}(),+function a(){}(), (function a(){})(), (function a(){})()。function a(){}()这种写法是非法的,前面像是函数声明,后面()是执行函数,把函数声明转变为函数表达式就可以了。

函数没有return默认返回undefined,在函数前面加!是把函数声明转变为表达式来执行,执行后这个函数消失,同时!function fn(){}()结果是true。

在js代码首行前面加;,因为js可以用空行来分隔代码(正常情况下应该用分号),在js被压缩时,空行会被删掉,因此你的js首行前面加;是为了防止压缩js代码和你的代码之间没有;而报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值