摘要:執(zhí)行環(huán)境的類型有兩種全局全局執(zhí)行環(huán)境局部函數(shù)執(zhí)行環(huán)境每個(gè)環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名但任何環(huán)境都不能通過向下搜索作用域鏈而進(jìn)入另一個(gè)執(zhí)行環(huán)境。內(nèi)部可通過作用域鏈訪問外部,外部不能訪問內(nèi)部。
變量、作用域和內(nèi)存問題 ECMAScript 數(shù)據(jù)類型 基本類型(5種):
Undefined,Null,Boolean,Number,String
typeof() 檢測一個(gè)變量是否是基本數(shù)據(jù)類型
基本類型在內(nèi)存中占據(jù)固定大小的空間,因此被保存在 棧 內(nèi)存中。
從一個(gè)變量向另一個(gè)變量復(fù)制 基本類型 的值,會(huì)創(chuàng)建這個(gè)值的一個(gè)副本。
引用類型:保存在內(nèi)存中的對(duì)象。
引用類型的值是對(duì)象,保存在 堆 內(nèi)存中。
instanceof() 檢測是什么類型的對(duì)象
alert (color instanceof Array) // true or false alert (persion instanceof Object) // true
包含引用類型值的變量實(shí)際上包含的并不是對(duì)象本身,而是一個(gè)指向該對(duì)象的指針。
從一個(gè)變量向另一個(gè)變量復(fù)制 引用類型 的值,復(fù)制的其實(shí)是指針,因此兩個(gè)變量最終都指向同一個(gè)對(duì)象。
執(zhí)行環(huán)境及作用域所有變量(包括基本類型和引用類型)都存在于一個(gè)執(zhí)行環(huán)境當(dāng)中,這個(gè)執(zhí)行環(huán)境(也稱為作用域)決定了變量的生命周期,以及哪一部分代碼可以訪問其中的變量。
執(zhí)行環(huán)境的類型有兩種:全局(全局執(zhí)行環(huán)境)
局部(函數(shù)執(zhí)行環(huán)境)
每個(gè)環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名;但任何環(huán)境都不能通過向下搜索作用域鏈而進(jìn)入另一個(gè)執(zhí)行環(huán)境。(內(nèi)部可通過作用域鏈訪問外部,外部不能訪問內(nèi)部)。
延長作用域鏈當(dāng)執(zhí)行流進(jìn)入下列任何一個(gè)語句時(shí),作用域鏈就會(huì)得到加長:
try-catch 語句的catch塊
with語句
沒有塊級(jí)作用域對(duì)于 javascript 來說,由 for 語句創(chuàng)建的變量 i 在 for 循環(huán)結(jié)束后,也依舊存在于循環(huán)外部的執(zhí)行環(huán)境中。
for (var i =0; i < 10; i++) { doSomething(i); } alert(i); //10
聲明變量:
使用 var 聲明:添加到最接近的環(huán)境中。
不用 var 聲明,自動(dòng)添加到全局環(huán)境。所以建議一定要先聲明。
查詢標(biāo)識(shí)符:
從作用域的前端開始,向上逐級(jí)查詢與給定名字匹配的標(biāo)識(shí)符。
垃圾收集JavaScript 具有自動(dòng)垃圾收集機(jī)制,也就是說,執(zhí)行環(huán)境會(huì)負(fù)責(zé)管理代碼執(zhí)行過程中使用的內(nèi)存。
原理:找出那些不再使用的變量,然后釋放其占用的內(nèi)存。垃圾回收器會(huì)按照固定的時(shí)間間隔周期性的執(zhí)行這一操作。
通常有兩個(gè)策略:
標(biāo)記清除(最常用的垃圾清除方式) 引用計(jì)數(shù)(不太常見)文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103218.html
摘要:具體說就是執(zhí)行流進(jìn)入下列任何一個(gè)語句時(shí),作用域鏈就會(huì)得到加長語句的塊。如果局部環(huán)境中存在著同名的標(biāo)識(shí)符,就不會(huì)使用位于父環(huán)境中的標(biāo)識(shí)符訪問局部變量要比訪問全局變量更快,因?yàn)椴挥孟蛏纤阉髯饔糜蜴湣? 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...
摘要:局部變量只在函數(shù)執(zhí)行過程中存在。此時(shí),局部變量就沒有存在的必要了,因此可以釋放他們所占的內(nèi)存以供他們使用。引用計(jì)數(shù)的含義是跟蹤記錄每個(gè)值被引用的次數(shù)。這一做法適合于大多數(shù)全局變量和局部變量的屬性。 基本類型和引用類型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值。基本類型值指的是簡單的數(shù)據(jù)段,而引用類型的值指那些可能有多個(gè)值構(gòu)成的對(duì)象。 動(dòng)態(tài)的屬性 ...
摘要:作用域和閉包是最重要的概念之一,想要進(jìn)一步學(xué)習(xí),就必須理解作用域和閉包的工作原理。全局和局部作用域的關(guān)系在函數(shù)體內(nèi),局部變量的優(yōu)先級(jí)高于同名的全局變量。作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。 作用域和閉包是 JavaScript 最重要的概念之一,想要進(jìn)一步學(xué)習(xí) JavaScript,就必須理解 JavaScript 作用域和閉包的工作原理。 作用域 任何...
摘要:在操作對(duì)象時(shí),實(shí)際上是在操作對(duì)象的引用而不是實(shí)際的對(duì)象。為此,引用類型的值是按引用訪問的。標(biāo)記清除是目前主流的垃圾收集算法,這種算法的思想是給當(dāng)前不使用的值加上標(biāo)記,然后再回收其內(nèi)存 1.在操作對(duì)象時(shí),實(shí)際上是在操作對(duì)象的引用而不是實(shí)際的對(duì)象。為此,引用類型的值是按引用訪問的。 2.當(dāng)從一個(gè)變量向另一個(gè)變量復(fù)制引用類型的值時(shí),兩個(gè)變量實(shí)際上將引用同一個(gè)對(duì)象,因此,改變其中一個(gè)變量,就會(huì)...
摘要:在中雖然對(duì)象通過標(biāo)記清除的方式進(jìn)行垃圾收,但與對(duì)象卻是通過引用計(jì)數(shù)回收垃圾的,也就是說只要涉及及就會(huì)出現(xiàn)循環(huán)引用問題。如果垃圾收集例程回收的內(nèi)存分配量低于,則變量字面量和或數(shù)組元素的臨界值就會(huì)加倍。 只挑本人重要的寫(有夾雜其他補(bǔ)充) 基本類型和引用類型的值 描述:基本類型值指的是簡單的數(shù)據(jù)段,而引用類型值指那些可能由多個(gè)值構(gòu)成的對(duì)象。 動(dòng)態(tài)的屬性 引用類型的值,我們可以為其添加屬性和...
閱讀 2901·2021-10-14 09:50
閱讀 1238·2021-10-08 10:21
閱讀 3671·2021-10-08 10:16
閱讀 3075·2021-09-27 14:02
閱讀 3150·2021-09-23 11:21
閱讀 2147·2021-09-07 10:17
閱讀 418·2019-08-30 14:00
閱讀 2127·2019-08-29 17:26