91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中原始值和引用值的儲存方式示例詳解

發布時間:2020-09-06 19:34:37 來源:腳本之家 閱讀:105 作者:心晴安夏 欄目:web開發

在ECMAscript中,變量可以存放兩種類型的值,即原始值和引用值

  • 原始值指的是代表原始數據類型的值,也叫基本數據類型,包括:Number、Stirng、Boolean、Null、Underfined
  • 引用值指的是復合數據類型的值,包括:Object、Function、Array、Date、RegExp

根據數據類型不同,有的變量儲存在棧中,有的儲存在堆中。具體區別如下:

原始變量及他們的值儲存在棧中,當把一個原始變量傳遞給另一個原始變量時,是把一個棧房間的東西復制到另一個棧房間,且這兩個原始變量互不影響。

引用值是把  引用變量的名稱儲存在棧中,但是把其實際對象儲存在堆中,且存在一個指針由變量名指向儲存在堆中的實際對象,當把引用對象傳遞給另一個變量時,復制的其實是指向實際對象的指針, 此時 兩者指向的 是同一個數據,若通過方法改變其中一個變量的值,則訪問另一個變量時,其值也會隨之加以改變;但若不是通過方法 而是通過 重新賦值  此時 相當于 重新開了一個房間  該值的原指針改變  ,則另外一個 值 不會隨他的改變而改變。

看示例:

var a="hello";
var b=a;
a="world";
alert(a);//world
alert(b);//hello
var arr=[1,3];
arr1=arr;
arr.push(5);
alert(arr)//1,3,5
alert(arr1);//1,3,5
arr=[7,8];
alert(arr);//7,8
alert(arr1);//1,3,5

用圖來表示 結果如下:

原始變量的值互不影響,引用變量arr和arr1指向的為同一對象,所以當對arr通過方法改變其值時(堆房間里的數據發生變化),訪問arr1的數據時就會訪問到改變后的對象

JS中原始值和引用值的儲存方式示例詳解

通過非方法來改變引用變量的值時,會為該引用變量重新創建一個堆房間,此時指針也會發生變化:

JS中原始值和引用值的儲存方式示例詳解

總結:

Number、Stirng、Boolean、Null、Underfined這些基本數據類型,他們的值直接保存在棧中;

Object、Function、Array、Date、RegExp這些引用類型,他們的引用變量儲存在棧中,通過指針指向儲存在堆中的實際對象

以上所述是小編給大家介紹的JS中原始值和引用值的儲存方式示例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临夏县| 宁明县| 疏附县| 岳普湖县| 罗平县| 平南县| 孟津县| 丰城市| 方山县| 永寿县| 阿拉善右旗| 太白县| 周宁县| 泸水县| 东乌珠穆沁旗| 晋州市| 定安县| 晋中市| 闽侯县| 乐都县| 高平市| 杨浦区| 宝应县| 乐平市| 顺昌县| 确山县| 乐陵市| 徐闻县| 苍梧县| 沂南县| 遂昌县| 桃园市| 汝阳县| 二连浩特市| 女性| 南投市| 广水市| 额尔古纳市| 阿巴嘎旗| 达州市| 城市|