箭頭函數和function的區別
- 作用域:
箭頭函數指向其定義環境,this的指向無法通過其他方式改變;
function指向其直接調用者,一般來說最通常的是window對象,對象屬性則指向改對象; - 構造函數:箭頭函數不能當做構造函數
- 參數問題:箭頭函數不存在arguments對象,用rest參數代替;
- 原型問題:箭頭函數不存在原型;
- 箭頭函數不能使用yield命令,因此箭頭函數不能用作genertor函數。
- 變量和定義提升:
箭頭函數定義函數的時候,需要var(let、const)關鍵字;let和const不存在變量提升,而var雖然有變量提升卻不存在定義上的提升;
function存在變量和定義的提升。
// Example
console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initializatio
console.log(b) // undefined 變量提升定義不提升
c() // 'c' 變量和定義提升
const a = () => {}
var b = () => {}
function c() { console.log('c') }
```