當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
settimeout( )是全局函数吗_JS函数的执行
生活随笔
收集整理的這篇文章主要介紹了
settimeout( )是全局函数吗_JS函数的执行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
js 在不同時機運行,會有不同的運行結果,本文將分別舉例分析
案例1
只有在調用fn()時函數才開始執行
函數可以調用全局變量a
案例2
再次聲明,在調用fn()是才開始執行函數,所以執行完 a=2后才開始執行fn(),此時a=2,所以輸出為a:2
異步函數調用
案例1
此時輸出的不是2,而是3,因為setTimeout,是將所有代碼執行完才會執行
也就是
let a = 1,a = 2, fn(), a =3 ,setTimeout(),此時a已經是3了,所以輸出3
setTimeout的通俗理解
你正在打游戲,還剩下最后一關,這時候你媽媽讓你去吃飯,你嘴上說馬上(對應setTimeout(function, 0)),但其實會把游戲打完之后再去吃飯。
套娃案例
下面來分析這個案例,再次聲明,函數只有在調用的時候才會執行
- 因為f1(),先進入function f1(){}
- let a =1.function f2(){}不執行,因為f2沒有調用,繼續向下
- console.log(a),此時的a為1,所以先打印出一個1
- a = 100
- 調用f2(),進入function f2(){}
- let a = 2,f3()沒有調用,所以跳過,執行a=22
- 調用f3(),進入function f3(){}
- console.log(a),此時a為22
- 所以總共輸出兩個a,1和22
閉包
一個函數可以訪問外部函數的作用域,則這個外部函數中的變量和該函數組成閉包
紅框內部為閉包函數f3訪問了函數f2作用域內的變量a
想了解更多內容請訪問官網:
閉包?developer.mozilla.org總結
以上是生活随笔為你收集整理的settimeout( )是全局函数吗_JS函数的执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Python] 程序结构与控制流
- 下一篇: python三个数求和_Python:l