js : 預解釋分析規律+用到的知識點

預解釋分析規律

  1. 預解釋
  2. 代碼從上到下執行
  3. 當我們遇到“函數定義階段”的時候,不管,因為在預解釋階段,函數已經聲明+定義過了
  4. 當我們遇到“函數調用階段”的時候
  • 形成私有作用域
  • 形參賦值
  • 預解釋
  • 代碼從上到下執行

注意:在函數調用,一定要順帶寫上“該函數對應的堆內存地址”,因為找上級作用域的時候要用到

上級作用域

上級作用域跟函數在哪里調用無關,只跟函數對應堆內存在哪里開辟有關

關注

  1. 內存和內存釋放
  • 不釋放
  • 不立即釋放
  • 立即釋放
    • 一旦私有作用域得到釋放,函數的每次調用之間,沒有任何關系
  1. 預解釋無節操
  • 只對等號左邊帶var的進行預解釋,只聲明,不定義
  • 聲明過的不會重新聲明,但是會重新賦值
  • 自執行函數不會進行預解釋,只有執行到它的時候,聲明+定義+調用 同時完成
  • (針對IE10以下)條件判斷語句中,無論條件是否成立,都會進行預解釋
  • return后面的語句,不會進行預解釋,return下面的語句,雖然不執行,但是會進行預解釋

this

  • 當前函數被調用后,看前面是否有“.”,點前面是誰,this就是誰,如果沒有“.”,那么this就是window
  • 當元素身上的事件被觸發的時候,會執行一個函數,函數中的this指向觸發事件的元素
  • 自執行函數中的this,永遠指向window
  • 回調函數中的this,一般執行window,可以通過thisArg進行更改
  • 構造函數中的this執行實例

帶var和不帶var的區別

  • 帶var:1. 會進行預解釋 2. 在私有作用域下,是私有變量
  • 不帶var:1. 不會進行預解釋 2. 在私有作用域下,是window的全局屬性

運算符的優先級

算數 > 比較 > 邏輯 > 賦值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。