您好,登錄后才能下訂單哦!
本文介紹的是setTimeout函數,延遲執行函數里的執行上下文,分享給大家供大家參考學習,來看看詳細的內容:
(1)ES5中,setTimeout里面的函數的執行上下文為全局上下文,舉例來說:
function log(){ setTimeout(function(){console.log(this.id)},100) } var id=42 log.call({id:21}) //輸出的結果為42
我們可以看到setTimeout,被延遲執行的函數,里面的this,指向的是全局作用域,也就是這個函數的上下文為全局上下文。
(2)在ES6的箭頭函數中,setTimeout里面,如果執行了一個箭頭函數,那么這個函數的執行上下文為定義這個箭頭函數所在的函數。
function log(){ setTimeout(()=>{ console.log(this.id) },100) } var id=42; log.call({id:21}) //這次輸出的是21
總結:
因為ES6中,箭頭函數的this,規定的指向定義這個箭頭函數所在的那個函數。于是這里箭頭函數里面的this,就固定bind了{id:21}。
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。