什麼是箭頭函式?它的優點?
簡單來說,箭頭函式的優點就是能讓程式碼更為精簡!
是ES6的新功能。
箭頭函式與一般函式的不同
- 箭頭函示沒有 arguments參數。
arguments會將我們傳入的參數全部以陣列的方式列出來,它並不是一般的陣列而是類陣列!
若換成箭頭函式,console.log會出錯 //arguments is not defined//一般函式 const num=function(){ console.log(arguments); } num(1,2,3,4,5,6); // Augrments(6)[1,2,3,4,5,6]
若需要取出參數,可以使用其餘參數的方法 ...arg//一般函式 const num=(...arg)=>{ console.log(arg); } num(1,2,3,4,5,6); // (6)[1,2,3,4,5,6]
- this 的綁定,一般函式與箭頭函式this指向不同
箭頭函示沒有自己的this,會自動套用外層的this
箭頭函式的this會依據函式在哪裡建立而決定,而非與一般函式一樣,依照執行時被呼叫的地方決定。
3.箭頭函式無法當成建構函式使用*關於this只後再寫一篇*
*關於建構函式只後再寫一篇+
箭頭函式的寫法
//此為一般函式表達式
const greet=function(someone){
return someone + '你好';
}
console.log(greet('Tom')); //Tom 您好
步驟一: 將function去除,並於參數右邊加上 =>
//此為一般函式表達式
const greet=(someone)=>{
return someone + '你好';
}
console.log(greet('Tom')); //Tom 您好
步驟二: 若程式碼內容為表達式時,可以去掉{}與return
表達式的意思是程式碼的內容為回傳一個質
//此為一般函式表達式
const greet=(someone)=>someone + '你好';
console.log(greet('Tom')); //Tom 您好
步驟二: 若只有一個參數,可將參數的()去掉
若沒有參數,需保有空括號();若有一個以上的參數,有需有括號
//此為一般函式表達式
const greet=someone=>someone + '你好';
console.log(greet('Tom')); //Tom 您好