js 賦值?值類型和引用類型

近來做的一個項目中出現了,var result = data.data//data.data 爲數組,結果更改了result的值導致data的屬性直接發生變化,後查閱資料發現js數組其實爲引用類型。

js的賦值分類如下:
(1)值類型:數值、布爾值、null、undefined。
(2)引用類型:對象、數組、函數。

一、值類型-例子:

var b='text';
var a = b;
b = 'textb';
a = 'texta';
alert(a);  //texta
alert(b); // textb

值類型,即爲直接傳遞數值,重新分配新的存儲空間,因此a,b互不影響。

二、引用類型
請看下面知乎上的一個例子:

var a = [1,2,3];
var b = a;
a = [4,5,6];
alert(b);  //[1,2,3]


var a = [1,2,3];
var b = a;
a.pop();
alert(b);  //[1,2]

var a = [1,2,3];
var b = a;
a[0] = 111;
alert(b); //[111,2,3]

從這裏我們看出,數組的賦值b=a其實是:令b指向,a所指向的“數組對象”。
a = [4,5,6],實質上是直接改變a本身引用的“數組對象”,則不會對原本指向的[1,2,3]“數組對象”產生影響,因此b也不會發生變化。
a[0] = 111或者a.pop();會影響[1,2,3]這個“數組對象”,所以會影響b。

這裏寫圖片描述
圖片作者:Intopass
鏈接:https://www.zhihu.com/question/26042362/answer/31903017
來源:知乎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章