实例讲解js中的预编译
js作為一本腳本語言,可以不經過編譯直接運行,但遇到預編譯的問題,尤其是變量或函數同名時,這點知識就尤其必要了。為了更好地了解js語言背后的運行機理。筆者采用實例化的方式講解我理解的預編譯。
?? 理解預編譯首先要弄清楚兩種概念:函數聲明和變量賦值。
[javascript]?view plaincopy這種形式的寫法是函數聲明,即聲明一個函數,腳本在執行之前會做預編譯處理。
[javascript]?view plaincopy
?? 這種寫法是變量賦值,函數在js語言里也是一種數據,匿名函數作為變量賦值給定義的變量。這種形式在預編譯處理階段,只會給變量ledi分配一個內存空間,不會做初始化。初始化過程中會在執行時執行。
???好了,弄清楚以上概念,上實例。實例參考(點擊此處)。原作者只詳細解釋了前兩個實例,而筆者看來,接著的兩個也非常重要,那么筆者就甄別出代表性來講解。
示例代碼一:
[javascript]?view plaincopy???這段代碼,首先判斷兩個都屬于函數聲明。都會在預編譯階段處理,而函數名相同,會按后定義的來定義函數,在執行階段只會看到后定義的函數結果,也就不難理解了。
示例代碼二:
[javascript]?view plaincopy? 這段代碼,首先判斷兩種都屬于變量賦值。在預編譯階段,兩個變量名一樣,分配一個內存空間存放變量ledi內容。當代碼執行時,按照順序執行和賦值,會先后得到兩種結果。
示例代碼三:
[javascript]?view plaincopy???這段代碼,首先判斷,前一種屬于函數聲明,后一種屬于變量賦值。預編譯處理完,首先執行第二行,實際上是第一行的內容,第三行相當于將ledi變量重新賦值即初始化,重新賦值后,第四行執行第三行的函數。
示例代碼四:
[javascript]?view plaincopy? 以上代碼分開執行,可驗證,函數預編譯會執行,變量賦值則是先分配空間,執行時再賦值。
總結
以上是生活随笔為你收集整理的实例讲解js中的预编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript运行过程中的“预编译
- 下一篇: 深入理解JS中的变量作用域