1 變量定義
? ?let只在局部代碼塊中有效 ? ?const不希望修改,差不多跟常量一個(gè)意思吧
2 箭頭函數(shù)
? 【主要作用】:一是更簡短的函數(shù)書寫舟陆,二是對this的詞法解析
? ? ?x = > x ?*2 ? ? ? ? ? ?
相當(dāng)于 function(x){ return x*2}
node ? express.get('/aa",function(req,res){
? ? ? ? ? ? ?.....
})
現(xiàn)在你可以這樣寫
.get("/aa",(req,res)=>{
})
注意返回對象的話要用 ?()=> ({
? ? a:1,b:2
})
你以為就這樣坠非?簡化了匿名函數(shù)的寫法敏沉,nonono,想想以前函數(shù)里面的this吧炎码,
this所在的函數(shù)屬于誰盟迟,他就代表。
以前我們要用jq寫個(gè)購物車
var goodsDetail = {
? ? ?this.num = 10 ? //這是一個(gè)全局變量潦闲,
? ? ?init: function(){
? ? ? ? ? ?this.numAdd(); ? ?this屬于goodsDetail
},
numAdd:function(){
? ? ? ? ? ?var ?that = this;
? ? ? ? ? this ?----------this所在的函數(shù)為numAdd, ? ? numAdd屬于 goodDetail,so,this代表goodDetail
? ? ? ? ?$("#dom").click(function(){
? ? ? ? ? ? this ?------指代dom這個(gè)元素--------注意匿名函數(shù)的這種寫法
})
}
}
【注】:在 ECMAScript 3/5 中攒菠,這個(gè)問題可以通過新增一個(gè)變量來指向期望的this對象,然后將該變量放到閉包中來解決歉闰。
那現(xiàn)在有了箭頭函數(shù)呢辖众??和敬?凹炸??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 媽媽再也不用擔(dān)心我的this指向有問題了
箭頭函數(shù)沒有自己的this昼弟,他的this值繼承自外部啤它。而這里就是window對象了,所以會報(bào)undefined的錯(cuò)誤舱痘。
可以簡單的理解变骡,JS 每一個(gè) function 有自己獨(dú)立的運(yùn)行上下文,而箭頭函數(shù)不屬于普通的 function芭逝,所以沒有獨(dú)立的上下文塌碌。所以在箭頭函數(shù)里寫的this其實(shí)是包含該箭頭函數(shù)最近的一個(gè)function上下文中的this(如果沒有最近的function,就是全局)旬盯。