2015年6月17日,ECMAScript 6發佈正式版本,即ECMAScript 2015。 函數作為js語言中的一等公民。自然Es6中推出的箭頭函數(=>)也是備受矚目的。那我們接下來看下傳說中的“箭頭函數”和function函數有什麼不同吧~ 1.this的指向,函數內置 this 的值,取決 ...
2015年6月17日,ECMAScript 6發佈正式版本,即ECMAScript 2015。
函數作為js語言中的一等公民。自然Es6中推出的箭頭函數(=>)也是備受矚目的。那我們接下來看下傳說中的“箭頭函數”和function函數有什麼不同吧~
1.this的指向,函數內置 this 的值,取決於箭頭函數定義的上下文環境,而非箭頭函數執行的上下文環境。
2.this不可變,不同於function函數的指向(點我); 箭頭函數的this的指向是一成不變的,可以理解為常量一樣。
3.沒有arguments對象。只能通過rest語法進行傳值。
4.new 不能用,箭頭函數不能使用 new 關鍵字實例化對象,不然會發生報錯。
箭頭函數寫法:
<script> //普通函數寫法 function fn(){ console.log(this) } //箭頭函數寫法 let fn1=()=>console.log(this) </script>
箭頭函數傳參
let fn = (...arg) => { //console.log(arguments); // 實參的集合,類數組 console.log(arg); } fn(1,2,3,4)//console.log(arg) 1,2,3,4
箭頭函數this的指向
<script> function fn(){ console.log(this)//指向 對象obj } let fn1=()=>console.log(this) //指向window let obj ={ fn, fn1 } obj.fn() //普通函數通過對象調用 指向對象 obj.fn1()//箭頭函數不論怎麼調用this就是指向定義時上下文的this </script>