千鋒教育JavaScript全套視頻教程(10天學會Js,前端javascrip

函數(shù)
1 定義和調(diào)用函數(shù)
- 函數(shù)定義(又稱函數(shù)聲明、函數(shù)語句)形如
function name(parameterlist) { statements }
,其中parameterlist
是逗號分隔的參數(shù)列表。return
語句可以返回值。數(shù)據(jù)類型傳參采用傳值,對對象(包括Array)屬性的修改會對外部可見。 - 函數(shù)表達式與函數(shù)聲明形式類似,但作為語句的一個部分,其中
name
可選。也可以通過Function
構(gòu)造函數(shù)從字符串里構(gòu)造出函數(shù)。函數(shù)表達式不會提前。 - 方法是一種作為對象屬性的函數(shù)。
- ES6支持默認形參,以及
...name
的方式聲明剩余形參,其中name
是存放額外參數(shù)的數(shù)組。 - 注意:函數(shù)聲明會被提前。函數(shù)表達式賦值的對象會被提前,但其值為
undefined
。 - 函數(shù)調(diào)用語法和其他語言一樣,可以遞歸。函數(shù)本身也是對象,可以通過
apply
方法或call
方法調(diào)用。
2 作用域和函數(shù)棧
- 在函數(shù)內(nèi),可以訪問函數(shù)內(nèi)定義的變量(及函數(shù))以及父函數(shù)所能訪問到的變量(及函數(shù)),但不能訪問到子函數(shù)的變量(及函數(shù))。
- 在函數(shù)內(nèi)部,可以通過
arguments.callee
引用自己,也可以通過arguments[index]
和arguments.length
獲取參數(shù)及其個數(shù)。注意:arguments
不是數(shù)組。函數(shù)調(diào)用提供的參數(shù)和函數(shù)聲明提供的參數(shù)數(shù)目不一致,提供少了的參數(shù)是默認參數(shù)或(沒默認參數(shù))undefined
,提供多了的參數(shù)可以通過arguments
訪問。
3 嵌套函數(shù)和閉包
- 嵌套函數(shù)會形成閉包,閉包內(nèi)引用的外層作用域的變量會被保留,直到該閉包銷毀。閉包按引用捕獲外層變量。
- 注意:內(nèi)層作用域會屏蔽外層作用域的同名變量。閉包不捕獲
this
,閉包中的this
變量為其調(diào)用者而非創(chuàng)建者。對于普通函數(shù)this
是(構(gòu)造函數(shù))一個全新的對象或(strict模式的函數(shù)調(diào)用)undefined
或(以對象方法的形式調(diào)用)原始對象。
4 箭頭函數(shù)
- 語法形式如
(parameters, ...) => { statements }
或者(parameters, ...) => expression
創(chuàng)建一個箭頭函數(shù)。當形參個數(shù)為1個時,可省略括號,支持默認形參和剩余形參。箭頭函數(shù)沒有自己的this
、arguments
、super
和new.target
。 - 注意:箭頭函數(shù)捕獲
this
,箭頭函數(shù)中的this
變量為其創(chuàng)建者而非調(diào)用者。
5 預定義函數(shù)
eval
:執(zhí)行字符串中的JS代碼;isFinite
、isNan
:判斷是否是有限數(shù)字和NaN;parseFloat
、parseInt
:解析字符串返回數(shù)字,parseInt
還可以選擇基數(shù);encodeURI
、decodeURI
:將URI中的某些字符(不改變URI本身的地址)轉(zhuǎn)換為轉(zhuǎn)義字符,和轉(zhuǎn)換回去;encodeURIComponent
、decodeURIComponent
:將整個URI的某些字符轉(zhuǎn)換為轉(zhuǎn)義字符,和轉(zhuǎn)換回去。
標簽: