文章標題

變量、作用域

基本類型和引用類型

基本類型:值保存
* Undefined、Null、Boolean、Number 和 String
對象類型:引用保存,可以增加動態屬性
* Object

執行環境及作用域

  • 每個函數有一個執行環境
  • 嵌套的執行環境構成作用域鏈
  • 標識符解析沿着作用域鏈一層層搜索
  • try-catch 會創建作用域
  • with會創建作用域
  • 沒有塊級作用域

函數

  • 函數是對象
  • 沒有重載 :
    以 像傳遞參數一樣把一個函數傳遞給另一個函數,而且可以將一個函數作爲另一個函數的結果返回
  • 函數聲明 VS 函數表達式
    解析器會率先讀取函數聲明,並使其在執行 9 任何代碼之前可用(可以訪問);至於函數表達式,則必須等到解析器執行到它所在的代碼行,纔會真 正被解釋執行
  • 函數內部屬性
    arguments
    arguments.callee
    this:this 引用的是函數據以執行的環境對象——或者也可以說是 this 值(當在網頁的全局作用域中調用函數時, this 對象引用的就是 window)
    caller:ECMAScript 5 也規範化了另一個函數對象的屬性
  • 函數屬性&方法
    length:希望接收的命名參數的個數
    prototype:對於 ECMAScript 中的引用類型而言,prototype 是保存它們所有實例方法的真正所在。換句話說,諸如 toString()和 valueOf()等方法實際上都保存在 prototype 名下,只不過是通過各自對象的實例訪 問罷了。在創建自定義引用類型以及實現繼承時,prototype 屬性的作用是極爲重要的(第 6 章將詳 細介紹)。在 ECMAScript 5 中,prototype 屬性是不可枚舉的,因此使用 for-in 無法發現。
    apply()和 call():在特定的作 用域中調用函數,實際上等於設置函數體內 this 對象的值。首先,apply()方法接收兩個參數:一個 是在其中運行函數的作用域,另一個是參數數組。其中,第二個參數可以是 Array 的實例

在嚴格模式下,未指定環境對象而調用函數,則 this 值不會轉型爲 window。 除非明確把函數添加到某個對象或者調用 apply()或 call(),否則 this 值將是 undefined。

  • 單體內置對象
    Global:屬於任何其他對象的屬性和方法,最終都是它的屬性和方法。事實上,沒有全 局變量或全局函數;所有在全局作用域中定義的屬性和函數,都是 Global 對象的屬性。encodeURI、encodeURIComponent、eval、window

面向對象

?????

函數表達式

函數聲明 VS 函數表達式

函數聲明

  • 函數聲明提升,執行代碼之前先讀取函數聲明

函數表達式

  • 表達式是匿名函數,結果是一個值,可以賦予變量

遞歸

“`javascript

““

閉包

概念

有權訪問另一個函數作用域中變量的函數。
創建閉包常見的方式,是在一個函數內部創建另一個函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章