es6-箭頭函數

1 變量定義

? ?let只在局部代碼塊中有效 ? ?const不希望修改,差不多跟常量一個意思吧

2 箭頭函數

? 【主要作用】:一是更簡短的函數書寫,二是對this的詞法解析


? ? ?x = > x ?*2 ? ? ? ? ? ?

相當于 function(x){ return x*2}

node ? express.get('/aa",function(req,res){

? ? ? ? ? ? ?.....

})

現在你可以這樣寫

.get("/aa",(req,res)=>{

})

注意返回對象的話要用 ?()=> ({

? ? a:1,b:2

})

你以為就這樣?簡化了匿名函數的寫法,nonono,想想以前函數里面的this吧,

this所在的函數屬于誰,他就代表。


以前我們要用jq寫個購物車

var goodsDetail = {

? ? ?this.num = 10 ? //這是一個全局變量,

? ? ?init: function(){

? ? ? ? ? ?this.numAdd(); ? ?this屬于goodsDetail

},

numAdd:function(){

? ? ? ? ? ?var ?that = this;

? ? ? ? ? this ?----------this所在的函數為numAdd, ? ? numAdd屬于 goodDetail,so,this代表goodDetail

? ? ? ? ?$("#dom").click(function(){

? ? ? ? ? ? this ?------指代dom這個元素--------注意匿名函數的這種寫法

})

}

}


【注】:在 ECMAScript 3/5 中,這個問題可以通過新增一個變量來指向期望的this對象,然后將該變量放到閉包中來解決。


那現在有了箭頭函數呢?????

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 媽媽再也不用擔心我的this指向有問題了


箭頭函數沒有自己的this,他的this值繼承自外部。而這里就是window對象了,所以會報undefined的錯誤。

可以簡單的理解,JS 每一個 function 有自己獨立的運行上下文,而箭頭函數不屬于普通的 function,所以沒有獨立的上下文。所以在箭頭函數里寫的this其實是包含該箭頭函數最近的一個function上下文中的this(如果沒有最近的function,就是全局)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容