摘要:使用聲明的變量會動被添加到最近的環境中查詢標識符,現在作用域鏈的最前端開始搜索,逐步向上級查詢,直到找到匹配的標識符,在變量查詢中,訪問局部變量要比全局變量更快,因為不需要向上搜索作用域。
基本類型和引用類型的值
基本類型值指的是簡單的數據段;
引用類型值指那些可能由多個值構成的對象。
不能給基本類型添加屬性,可以給引用類型值動態的添加屬性。
基本類型按值訪問,存放在棧內存中。
引用類型按引用訪問,存放在堆內存中,棧內存中存放的是它的地址。
復制引用類型,復制的是棧內存中的地址,所以改變一個變量會影響另一個變量。
不管是棧內存還是堆內存,復制的都是棧內存中的地址。
所有的函數參數都是按值傳遞的。
function setName(obj){ //這里將要傳遞一個引用類型的參數,但不是按引用傳遞,是按值傳遞 obj.name = "lee"; } var person = new Object();// setName(person); alert(person.name); //打印lee //js沒有按引用傳參的功能,切記不能把傳遞引用參數當作按引用傳參
傳參是局部變量
var box = "Lee"; function setBox = { //通過傳參也是局部變量,作用域在setBox()范圍下 alert(box); //打印"red" } setBox("red"); alert(box); //打印"Lee"檢測類型
typeof只能檢測基本數據類型
instanceof能檢測引用類型的值
語法:
result = variable instanceof constructor
使用時構造函數首字母需要大寫;
變量和引用類型的值對應返回true,否則返回false。
instanceof在檢測基本類型時,始終返回false.
全局環境被認為是window對象
作用域鏈作用域鏈的用途是保證對執行環境的有權訪問的所有變量和函數的有序訪問。
在同一作用域中可以互相訪問;在不同作用域中,全局環境不能訪問局部變量,在局部環境中可以訪問全局變量。
作用域鏈例子:
var box = "Lee"; function setBox(){ function setColor(){ //setColor()方法作用域在setBox()內 var b = "kkk"; //b的作用域在setColor()內 alert(b); //打印kkk return 123; //返回123 } return setColor(); //調用setColor(),返回123 } alert(setBox()); //調用setBox(),打印123沒有塊級作用域
if和for語句的花括號沒有作用域的功能。
使用var聲明的變量會動被添加到最近的環境中;
查詢標識符,現在作用域鏈的最前端開始搜索,逐步向上級查詢,直到找到匹配的標識符,
在變量查詢中,訪問局部變量要比全局變量更快,因為不需要向上搜索作用域。
垃圾收集器會在運行的時候給存儲在內容中的變量加上標記,然后去掉環境中正在使用變量的標記,沒有被去掉標記的標量將被視為準備刪除的變量。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94478.html
摘要:執行環境的類型有兩種全局全局執行環境局部函數執行環境每個環境都可以向上搜索作用域鏈,以查詢變量和函數名但任何環境都不能通過向下搜索作用域鏈而進入另一個執行環境。內部可通過作用域鏈訪問外部,外部不能訪問內部。 變量、作用域和內存問題 ECMAScript 數據類型 基本類型(5種): Undefined,Null,Boolean,Number,String typeof() 檢測...
摘要:變量作用域和內存問題基本類型和引用類型的值基本類型就是簡單的數據段種值類型,而引用類型就是對象操控對象的引用。但是不但能訪問自己的變量,也能訪問和全局作用域下的變量。延長作用域鏈相當于創造了一個新的變量對象在當前作用域的上方。 變量作用域和內存問題 1.基本類型和引用類型的值 基本類型就是簡單的數據段(5種值類型),而引用類型就是對象(操控對象的引用)。 1.1復制變量值 引用類型實際...
摘要:在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。標記清除是目前主流的垃圾收集算法,這種算法的思想是給當前不使用的值加上標記,然后再回收其內存 1.在操作對象時,實際上是在操作對象的引用而不是實際的對象。為此,引用類型的值是按引用訪問的。 2.當從一個變量向另一個變量復制引用類型的值時,兩個變量實際上將引用同一個對象,因此,改變其中一個變量,就會...
摘要:不允許直接訪問內存中的位置,也就是說不能直接操作對象的內存空間。在操作對象時,實際上是在操作對象的引用而不是實際的對象。解除引用的真正作用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收 1 基本類型和引用類型的值 基本數據類型是按值訪問的,因為可以操作保存在變量中的實際的值 基本類型值在內存中占據固定大小的空間,因此被保存在棧內存中 引用類型的值是保存在內存中的對象。JavaSc...
摘要:全局變量是最外圍的一個執行環境,代碼在環境中執行,會創建一個作用域鏈,用途是保證對執行環境有權訪問所有變量和函數的有序訪問。作用域鏈中最后一個對象始終是全局執行環境。內部環境可以通過作用域鏈訪問所有的外部環境,外部則不能訪問內部。 1、基本類型和引用類型的值 * 基本類型 : 指的是簡單的數據段,五種基本類型是按值訪問的,可以直接操作保存在變量中實際的值。 * 引用類型 : 指那些可能...
閱讀 1800·2021-11-22 09:34
閱讀 3083·2019-08-30 15:55
閱讀 663·2019-08-30 15:53
閱讀 2054·2019-08-30 15:52
閱讀 3000·2019-08-29 18:32
閱讀 1989·2019-08-29 17:15
閱讀 2392·2019-08-29 13:14
閱讀 3557·2019-08-28 18:05