Javascrip之匿名函数
生活随笔
收集整理的這篇文章主要介紹了
Javascrip之匿名函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面講過,定義函數的方式有兩種:一種是函數聲明,另一種是函數表達式。函數聲明:?
關于函數聲明,一個重要的特征就是函數聲明提升,意思就是在執行代碼之前會先讀取函數聲明。這就意味著可以把函數聲明放到調用它的語句之后。函數表達式:
函數表達式會先創建一個匿名函數,在將這個匿名函數賦值給某一變量。
來自為知筆記(Wiz)
| 123 | function functionName(arg0,arg1,arg2){ ??????//函數體 } |
| 123 | var functionName=function(arg0,arg1,arg2){ ??????//函數體 }?? //最常用的形式 |
能夠創建匿名函數在賦值給變量,也能把匿名函數作為其他函數的返回值返回。
1.遞歸
遞歸函數是在一個函數通過名字調用自身的情況下構成的。
下面是一個經典的遞歸階乘的函數。
| 1234567891011 | function factorial(num){? ????if(num<=1){? ????????return 1;? ????????}else{??????????? ????????return num*factorial(num-1);????????????? ????????}? ????}? ????var anotherFactorial=factorial;? factorial=null;? alert(anotherFactorial(4)); |
這個是錯誤的。
我們可以用arguments.callee解決這個問題,arguments.callee是一個指向正在執行的函數的指針,因此可以用它來實現對函數的遞歸第調用。
| 1234567891011 | function factorial(num){?? ????if(num<=1){?? ????????return 1;?? ????????}else{???????????? ????????return num*arguments.callee(num-1);?????????????? ????????}?? ????}?? ??????var anotherFactorial=factorial;?? factorial=null;?? alert(anotherFactorial(4)); |
但是在嚴格模式下,腳本是不能訪問arguments.callee的。我們可以使用函數表達式來達成相同的結過。
| 1234567891011 | var factorial=(function f(num){ ????if(num <=1 ){ ????????return 1 ????????}else{ ????????return num * f(num-1); ????} }); ??var anotherFactorial=factorial; factorial=null; alert(anotherFactorial(4)); |
?
?
來自為知筆記(Wiz)
總結
以上是生活随笔為你收集整理的Javascrip之匿名函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到儿子溺水被救起是什么意思
- 下一篇: 梦到捡笔是什么意思