預解釋分析規律
- 預解釋
- 代碼從上到下執行
- 當我們遇到“函數定義階段”的時候,不管,因為在預解釋階段,函數已經聲明+定義過了
- 當我們遇到“函數調用階段”的時候
- 形成私有作用域
- 形參賦值
- 預解釋
- 代碼從上到下執行
注意:在函數調用,一定要順帶寫上“該函數對應的堆內存地址”,因為找上級作用域的時候要用到
上級作用域
上級作用域跟函數在哪里調用無關,只跟函數對應堆內存在哪里開辟有關
關注
- 內存和內存釋放
- 不釋放
- 不立即釋放
- 立即釋放
- 一旦私有作用域得到釋放,函數的每次調用之間,沒有任何關系
- 預解釋無節操
- 只對等號左邊帶var的進行預解釋,只聲明,不定義
- 聲明過的不會重新聲明,但是會重新賦值
- 自執行函數不會進行預解釋,只有執行到它的時候,聲明+定義+調用 同時完成
- (針對IE10以下)條件判斷語句中,無論條件是否成立,都會進行預解釋
- return后面的語句,不會進行預解釋,return下面的語句,雖然不執行,但是會進行預解釋
this
- 當前函數被調用后,看前面是否有“.”,點前面是誰,this就是誰,如果沒有“.”,那么this就是window
- 當元素身上的事件被觸發的時候,會執行一個函數,函數中的this指向觸發事件的元素
- 自執行函數中的this,永遠指向window
- 回調函數中的this,一般執行window,可以通過thisArg進行更改
- 構造函數中的this執行實例
帶var和不帶var的區別
- 帶var:1. 會進行預解釋 2. 在私有作用域下,是私有變量
- 不帶var:1. 不會進行預解釋 2. 在私有作用域下,是window的全局屬性
運算符的優先級
算數 > 比較 > 邏輯 > 賦值