箭頭函式是 ES6 的新語法。
1 | // 原本的寫法 |
箭頭函式的簡寫規則
1.如果參數只有一個,可省略參數的括號(x)=> x,0 或多個都不可省略。
1 | const double = x => { |
2.函式本體如果只有一行,且只有 return 一個值,可省略大花括號和 return,直接把本體接在=>後面
1 | const double = x => x * 2; |
This 是什麼?和箭頭函式的關係
this 指的是函式的情境(context),某人去 101 大樓往下跳,但跳下去沒事,因為在爬樓梯,他只有跳一格的樓梯,當然沒事,但是跳這個動作很明確,就像是函式的定義一樣。
但是你在什麼樣的情境下跳,會影響他的結果,這個情境就是 Context 。
例如:一個跳的函式,裡面內容是固定的,但裡面的 this 就要看他執行時的情境而定。
1 | function jump() { |
javascript 裡函式的執行基本上可分為三種: 1.直接執行: 函式裡的 this 是 window (global)
1 | jump(); |
2.作為一個物件的方法來執行:裡面的 this 就是物件。
1 | const a = {}; |
3.假設頁面上有一個 button,點它就會執行 jump(),
如果一個函式以 Dom 監聽函式來執行,函式裡面的 this 就會指向所監聽的元素 Dom。
1 | <button id="btn"> |
1 | function jump() { |
用箭頭 This 會改變
如果以箭頭函式攥寫 Dom 的監聽函式,This 就會改變成指向 window。
1 | const jump = () => { |
只要是箭頭函式,無論如何執行它,裡面的 this 都會指向 window,這就是箭頭函式的特性,它沒有自己的情境(Context),它的內部 context 就等於它宣告的時候,它外面的 this。
React 會大量的用到 This 所以一定要弄懂。