下面小編就為大家?guī)?lái)一篇JS函數(shù)定義方式的區(qū)別介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,給大家一個(gè)參考。
關(guān)于JS的函數(shù)定義方式有以下兩種:
(1)典型的函數(shù)聲明
function slide(arguments){
//...code
}
(2)以函數(shù)表達(dá)式的形式定義函數(shù)
var slide = function(arguments){
//...code
}
雖然上面兩種方式邏輯上是等價(jià)的,但是還是有點(diǎn)小區(qū)別:
區(qū)別一:例一中的函數(shù)會(huì)在代碼執(zhí)行以前被加載到作用域中,而例二則是在代碼執(zhí)行到那一行的時(shí)候才會(huì)有定 義;
區(qū)別二:函數(shù)聲明會(huì)給函數(shù)指定一個(gè)名字,而函數(shù)表達(dá)式則是創(chuàng)建一個(gè)匿名函數(shù),然后將這個(gè)匿名函數(shù)賦給一個(gè)變量;
看下面例子:
function factorial(num){
if(num<=1){
return 1;
}
else {
return num*arguments.callee(num-1);
}
}
var anotherFactorial = factorial;
factorial = null;
console.log(anotherFactorial);//輸出factorial(){},有函數(shù)名
若是以函數(shù)表達(dá)式定義
var factorial = function(num){
//...code
}
//...code
console.log(anotherFactorial);//輸出function(){},匿名函數(shù)
以上這篇JS函數(shù)定義方式的區(qū)別介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考