函数类型:有参函数、无参函数、匿名函数、回调函数、立即执行函数、闭包函数、递归函数...
1、有參函數(shù):函數(shù)定義時,帶有參數(shù)的函數(shù)
設(shè)置函數(shù)參數(shù)的默認(rèn)值:
(1)直接在函數(shù)定義位置的小括號內(nèi)進(jìn)行賦值
(2)低版本默認(rèn)值的處理(在函數(shù)內(nèi)部判斷該參數(shù)是否有默認(rèn)值,若沒有,賦值初始值)
第1種默認(rèn)值賦值:
第2種默認(rèn)值賦值:
2、無參函數(shù):函數(shù)定義時沒有帶參數(shù)的函數(shù)
3、匿名函數(shù):函數(shù)定義時沒有函數(shù)名稱的函數(shù)
例如:
4、回調(diào)函數(shù):若函數(shù)A的參數(shù)是一個函數(shù)B,則稱函數(shù)B為函數(shù)A的回調(diào)函數(shù)
例如:
【函數(shù)執(zhí)行規(guī)律】
主程序遇到函數(shù),進(jìn)入到函數(shù)的內(nèi)部進(jìn)行執(zhí)行,執(zhí)行完畢完畢,將返回值返回到函數(shù)調(diào)用的位置,繼續(xù)向下執(zhí)行
?5、立即執(zhí)行函數(shù):函數(shù)聲明后,立即被調(diào)用
例如:
6、閉包函數(shù):閉包函數(shù)的返回值是一個函數(shù),返回的函數(shù)保留了函數(shù)定義時的作用域
例如:
7、遞歸函數(shù):在函數(shù)內(nèi)部調(diào)用自身
遞歸函數(shù)應(yīng)用場景:
(1)計算累加、階乘
(2)數(shù)組單元的計算等場景
例如:
?
注意:函數(shù)默認(rèn)的返回值是undefined
?==================Function類型=========================
1、定義函數(shù)的3種方式:
(1)使用function關(guān)鍵字定義
(2)使用函數(shù)表達(dá)式定義函數(shù)
(3)使用new Function()構(gòu)造函數(shù)定義函數(shù)
2、函數(shù)內(nèi)部屬性:
在函數(shù)內(nèi)部,有兩個特殊的對象:arguments和this
(1)callee屬性,該屬性是一個指針,指向擁有這個arguments對象的函數(shù)(? eg:arguments.callee()? )
(2)this引用的是函數(shù)執(zhí)行的環(huán)境對象——或者也可以說是this值(當(dāng)在網(wǎng)頁的全局作用域中調(diào)用函數(shù)時,this對象引用的就是window)
(3)ES5規(guī)范化了函數(shù)對象的另一個屬性:caller;這個屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用(eg: arguments.callee.caller )
注意:
(1)函數(shù)實(shí)際上是對象,每個函數(shù)都是Function類型的實(shí)例,而且都與其他引用類型一樣具有屬性和方法。
(2)函數(shù)名實(shí)際上是一個指向函數(shù)對象的指針。
(3)函數(shù)是對象,函數(shù)名是指針!
3、函數(shù)屬性和方法
屬性:length和prototype
length:該屬性表示函數(shù)希望接受的命名參數(shù)個數(shù)
prototype:對應(yīng)ECMAScript中的引用類型而言,prototype是保存它們所有實(shí)例方法的真正所在。prototype屬性是不可枚舉的,因此使用for-in無法發(fā)現(xiàn)
轉(zhuǎn)載于:https://www.cnblogs.com/sherryStudy/p/function_type.html
總結(jié)
以上是生活随笔為你收集整理的函数类型:有参函数、无参函数、匿名函数、回调函数、立即执行函数、闭包函数、递归函数...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我是这样理解HTTP和HTTPS区别的
- 下一篇: 打印斐波那契数列前10位数字