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,就是全局)。