箭頭函式
阿新 • • 發佈:2020-09-08
箭頭函式
參考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions
箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this, arguments, super或new.target
箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式
一個基本示例:
const materials = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ] console.log(materials.map(material=> material.length));
當只有一個引數時,圓括號是可選的
(singleParam) => { statements }
singleParam => { statements }
沒有引數的函式贏寫成一對圓括號
() => { statements }
高階語法
加括號的函式體返回物件字面量表達式
params => ({foo: bar})
支援剩餘引數和預設引數
(param1, param2, ...rest) => { statements }
(param1 = defaultValue1, param2, ..., paramN = defaultValueN) => { statements }
支援引數列表解構
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c; f(); // 6
引入箭頭函式有兩個方面的作用:更簡短的函式並且不繫結this
沒有單獨的this
在箭頭函數出現之前,每一個新函式根據它是如何被呼叫的來定義這個函式的this值:
如果該函式是一個建構函式,this指標指向一個新的物件。
在嚴格模式下的函式呼叫時,this指向undefined
如果該函式是一個物件的方法,則它的this指標指向這個物件
This被證明是令人厭煩的面向物件風格的程式設計