摘要:執(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
摘要:具體說就是執(zhí)行流進入下列任何一個語句時,作用域鏈就會得到加長語句的塊。如果局部環(huán)境中存在著同名的標識符,就不會使用位于父環(huán)境中的標識符訪問局部變量要比訪問全局變量更快,因為不用向上搜索作用域鏈。 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...
摘要:局部變量只在函數(shù)執(zhí)行過程中存在。此時,局部變量就沒有存在的必要了,因此可以釋放他們所占的內存以供他們使用。引用計數(shù)的含義是跟蹤記錄每個值被引用的次數(shù)。這一做法適合于大多數(shù)全局變量和局部變量的屬性。 基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值?;绢愋椭抵傅氖呛唵蔚臄?shù)據(jù)段,而引用類型的值指那些可能有多個值構成的對象。 動態(tài)的屬性 ...
摘要:作用域和閉包是最重要的概念之一,想要進一步學習,就必須理解作用域和閉包的工作原理。全局和局部作用域的關系在函數(shù)體內,局部變量的優(yōu)先級高于同名的全局變量。作用域鏈的用途,是保證對執(zhí)行環(huán)境有權訪問的所有變量和函數(shù)的有序訪問。 作用域和閉包是 JavaScript 最重要的概念之一,想要進一步學習 JavaScript,就必須理解 JavaScript 作用域和閉包的工作原理。 作用域 任何...
摘要:在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。標記清除是目前主流的垃圾收集算法,這種算法的思想是給當前不使用的值加上標記,然后再回收其內存 1.在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。 2.當從一個變量向另一個變量復制引用類型的值時,兩個變量實際上將引用同一個對象,因此,改變其中一個變量,就會...
摘要:在中雖然對象通過標記清除的方式進行垃圾收,但與對象卻是通過引用計數(shù)回收垃圾的,也就是說只要涉及及就會出現(xiàn)循環(huán)引用問題。如果垃圾收集例程回收的內存分配量低于,則變量字面量和或數(shù)組元素的臨界值就會加倍。 只挑本人重要的寫(有夾雜其他補充) 基本類型和引用類型的值 描述:基本類型值指的是簡單的數(shù)據(jù)段,而引用類型值指那些可能由多個值構成的對象。 動態(tài)的屬性 引用類型的值,我們可以為其添加屬性和...
閱讀 2905·2021-10-14 09:50
閱讀 1239·2021-10-08 10:21
閱讀 3673·2021-10-08 10:16
閱讀 3078·2021-09-27 14:02
閱讀 3150·2021-09-23 11:21
閱讀 2156·2021-09-07 10:17
閱讀 421·2019-08-30 14:00
閱讀 2131·2019-08-29 17:26