成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《JavaScript高級程序設計(第3版)》——變量、作用域和內存問題(四)

YacaToy / 1341人閱讀

摘要:執(zhí)行環(huán)境的類型有兩種全局全局執(zhí)行環(huán)境局部函數(shù)執(zhí)行環(huán)境每個環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名但任何環(huán)境都不能通過向下搜索作用域鏈而進入另一個執(zhí)行環(huán)境。內部可通過作用域鏈訪問外部,外部不能訪問內部。

變量、作用域和內存問題 ECMAScript 數(shù)據(jù)類型 基本類型(5種):

Undefined,Null,Boolean,Number,String

typeof() 檢測一個變量是否是基本數(shù)據(jù)類型

基本類型在內存中占據(jù)固定大小的空間,因此被保存在 內存中。

從一個變量向另一個變量復制 基本類型 的值,會創(chuàng)建這個值的一個副本。

引用類型:

保存在內存中的對象。

引用類型的值是對象,保存在 內存中。

instanceof() 檢測是什么類型的對象

alert (color instanceof Array)  // true or false
alert (persion instanceof Object) // true

包含引用類型值的變量實際上包含的并不是對象本身,而是一個指向該對象的指針。

從一個變量向另一個變量復制 引用類型 的值,復制的其實是指針,因此兩個變量最終都指向同一個對象。

執(zhí)行環(huán)境及作用域

所有變量(包括基本類型和引用類型)都存在于一個執(zhí)行環(huán)境當中,這個執(zhí)行環(huán)境(也稱為作用域)決定了變量的生命周期,以及哪一部分代碼可以訪問其中的變量。

執(zhí)行環(huán)境的類型有兩種:

全局(全局執(zhí)行環(huán)境)

局部(函數(shù)執(zhí)行環(huán)境)

每個環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名;但任何環(huán)境都不能通過向下搜索作用域鏈而進入另一個執(zhí)行環(huán)境。(內部可通過作用域鏈訪問外部,外部不能訪問內部)。

延長作用域鏈

當執(zhí)行流進入下列任何一個語句時,作用域鏈就會得到加長:

try-catch 語句的catch

with語句

沒有塊級作用域

對于 javascript 來說,由 for 語句創(chuàng)建的變量 i 在 for 循環(huán)結束后,也依舊存在于循環(huán)外部的執(zhí)行環(huán)境中。

for (var i =0; i < 10; i++) {
    doSomething(i);
}
alert(i); //10

聲明變量:

使用 var 聲明:添加到最接近的環(huán)境中。

不用 var 聲明,自動添加到全局環(huán)境。所以建議一定要先聲明。

查詢標識符:

從作用域的前端開始,向上逐級查詢與給定名字匹配的標識符。

垃圾收集

JavaScript 具有自動垃圾收集機制,也就是說,執(zhí)行環(huán)境會負責管理代碼執(zhí)行過程中使用的內存。

原理:找出那些不再使用的變量,然后釋放其占用的內存。垃圾回收器會按照固定的時間間隔周期性的執(zhí)行這一操作。

通常有兩個策略:

標記清除(最常用的垃圾清除方式) 引用計數(shù)(不太常見)

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/103218.html

相關文章

  • JavaScript高級程序設計》(3)讀書筆記 4章 變量、作用域和內存問題

    摘要:具體說就是執(zhí)行流進入下列任何一個語句時,作用域鏈就會得到加長語句的塊。如果局部環(huán)境中存在著同名的標識符,就不會使用位于父環(huán)境中的標識符訪問局部變量要比訪問全局變量更快,因為不用向上搜索作用域鏈。 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...

    lidashuang 評論0 收藏0
  • JavaScript高級程序設計》筆記:變量作用域和內存問題

    摘要:局部變量只在函數(shù)執(zhí)行過程中存在。此時,局部變量就沒有存在的必要了,因此可以釋放他們所占的內存以供他們使用。引用計數(shù)的含義是跟蹤記錄每個值被引用的次數(shù)。這一做法適合于大多數(shù)全局變量和局部變量的屬性。 基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值?;绢愋椭抵傅氖呛唵蔚臄?shù)據(jù)段,而引用類型的值指那些可能有多個值構成的對象。 動態(tài)的屬性 ...

    Zack 評論0 收藏0
  • JavaScript 闖關記》之作用域和閉包

    摘要:作用域和閉包是最重要的概念之一,想要進一步學習,就必須理解作用域和閉包的工作原理。全局和局部作用域的關系在函數(shù)體內,局部變量的優(yōu)先級高于同名的全局變量。作用域鏈的用途,是保證對執(zhí)行環(huán)境有權訪問的所有變量和函數(shù)的有序訪問。 作用域和閉包是 JavaScript 最重要的概念之一,想要進一步學習 JavaScript,就必須理解 JavaScript 作用域和閉包的工作原理。 作用域 任何...

    Jacendfeng 評論0 收藏0
  • JavaScript紅寶書筆記()---變量作用域和內存問題

    摘要:在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。標記清除是目前主流的垃圾收集算法,這種算法的思想是給當前不使用的值加上標記,然后再回收其內存 1.在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。 2.當從一個變量向另一個變量復制引用類型的值時,兩個變量實際上將引用同一個對象,因此,改變其中一個變量,就會...

    imtianx 評論0 收藏0
  • Javascript高級程序設計 ()》變量作用域和內存問題

    摘要:在中雖然對象通過標記清除的方式進行垃圾收,但與對象卻是通過引用計數(shù)回收垃圾的,也就是說只要涉及及就會出現(xiàn)循環(huán)引用問題。如果垃圾收集例程回收的內存分配量低于,則變量字面量和或數(shù)組元素的臨界值就會加倍。 只挑本人重要的寫(有夾雜其他補充) 基本類型和引用類型的值 描述:基本類型值指的是簡單的數(shù)據(jù)段,而引用類型值指那些可能由多個值構成的對象。 動態(tài)的屬性 引用類型的值,我們可以為其添加屬性和...

    szysky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<