JS ES6中setTimeout函數(shù)的執(zhí)行上下文示例
本文介紹的是setTimeout函數(shù),延遲執(zhí)行函數(shù)里的執(zhí)行上下文,分享給大家供大家參考學(xué)習(xí),來看看詳細(xì)的內(nèi)容:
(1)ES5中,setTimeout里面的函數(shù)的執(zhí)行上下文為全局上下文,舉例來說:
function log(){ setTimeout(function(){console.log(this.id)},100) } var id=42 log.call({id:21}) //輸出的結(jié)果為42
我們可以看到setTimeout,被延遲執(zhí)行的函數(shù),里面的this,指向的是全局作用域,也就是這個函數(shù)的上下文為全局上下文。
(2)在ES6的箭頭函數(shù)中,setTimeout里面,如果執(zhí)行了一個箭頭函數(shù),那么這個函數(shù)的執(zhí)行上下文為定義這個箭頭函數(shù)所在的函數(shù)。
function log(){ setTimeout(()=>{ console.log(this.id) },100) } var id=42; log.call({id:21}) //這次輸出的是21
總結(jié):
因為ES6中,箭頭函數(shù)的this,規(guī)定的指向定義這個箭頭函數(shù)所在的那個函數(shù)。于是這里箭頭函數(shù)里面的this,就固定bind了{(lán)id:21}。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Fundebug支持監(jiān)控微信小程序HTTP請求錯誤的方法
這篇文章主要介紹了Fundebug支持監(jiān)控微信小程序HTTP請求錯誤的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02詳解JavaScript如何準(zhǔn)確獲取任意變量的數(shù)據(jù)類型
js是弱類型語言,或者說是動態(tài)語言,在定義變量時我們可以不提前聲明變量的類型,也可以在變量聲明后賦予不同類型的值。所以本文為大家詳解一下JavaScript如何準(zhǔn)確獲取任意變量的數(shù)據(jù)類型,需要的可以參考一下2022-06-06JS實現(xiàn)駝峰字符串轉(zhuǎn)下劃線字符串的三種方法
這篇文章主要介紹了js下劃線和駝峰互相轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2023-11-11