談談箭頭函數和function的區別

箭頭函數和function的區別

  1. 作用域:
    箭頭函數指向其定義環境,this的指向無法通過其他方式改變;
    function指向其直接調用者,一般來說最通常的是window對象,對象屬性則指向改對象;
  2. 構造函數:箭頭函數不能當做構造函數
  3. 參數問題:箭頭函數不存在arguments對象,用rest參數代替;
  4. 原型問題:箭頭函數不存在原型;
  5. 箭頭函數不能使用yield命令,因此箭頭函數不能用作genertor函數。
  6. 變量和定義提升:
    箭頭函數定義函數的時候,需要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') }
	```

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章