當程序在瀏覽器中運行的時候,js引擎會產生三個東西。node
1.全局對象 在js程序任何地方都能訪問到的對象,在瀏覽器中是window瀏覽器
2.this 變量指向window函數
在nodejs中 this是什麼?
3.外部環境this
暫時不講。
一圖抵萬言spa
好,我知道js引擎怎麼折騰你的代碼,那麼咱們看看執行上下文,也就是管理正在運行的程序的部分是如何工做的。code
不廢話是時候該上代碼了。對象
console.log(a); var a =12; b(); function b(){ console.log(5); }
結果是啥你想對了沒?blog
爲何這樣?ip
由於有一個變量聲明提高的過程。作用域
記住一句話,變量聲明提早,賦值原地不動。函數聲明直接提早。
這裏再來一個問題爲何這樣?
說這個以前先說一個例子,
console.log(a);![js運行原理建立](/Users/L/騰訊課堂/深刻了解js/js運行原理建立.png)![js運行原理建立](/Users/L/騰訊課堂/深刻了解js/js運行原理建立.png) b(); functon b(){ console.log(5); }
這裏要注意,undefined,是一個值,不等於不定義變量
程序執行和人眼閱讀相似,從上到下,從左到右,執行過去的不會再回去執行一遍。
執行過程,函數執行和銷燬過程。
函數就像刷盤子,你懂得,後進先出。
變量預解析,賦值外部環境之間的關係。
爲何有預解析。
ES6做用域,let關鍵字 塊級做用域
var
let
做業:尋找各大公司函數預解析題目10道題,要求作對8道。若是作不對,繼續找,直到合格。
若有疑問加入和更多資料,**
QQ羣:552079864