箭頭函數()=>{}與function的區別


1.箭頭函數與function定義函數的寫法:

//function
function fn(a, b){
    return a + b;
}
//arrow function
var foo = (a, b)=>{ return a + b };

2.this的指向:使用function定義的函數,this的指向隨着調用環境的變化而變化,而箭頭函數中的this指向是固定不變的,一直指向定義函數的環境。

//使用function定義的函數
function foo(){
    console.log(this);
}
var obj = { aa: foo };
foo(); //Window
obj.aa() //obj { aa: foo }

 

//使用箭頭函數定義函數
var foo = () => { console.log(this) };
var obj = { aa:foo };
foo(); //Window
obj.aa(); //Window

 

3.變量提升

由於js的內存機制,function的級別最高,而用箭頭函數定義函數的時候,需要var(let const定義的時候更不必說)關鍵詞,而var所定義的變量不能得到變量提升,故箭頭函數一定要定義於調用之前

 

本文轉載:https://blog.csdn.net/github_38851471/article/details/79446722

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM