在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ js 數(shù)組賦值問題 :值傳遞還是引用?

js 數(shù)組賦值問題 :值傳遞還是引用?

題目描述

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]
//第一個我懂 第二個我不懂

題目來源

知乎


這是一個人回答的
a = [4,5,6];//改變的是a引用本身,沒有改變數(shù)組對象
a.pop();//改變的是數(shù)組對象,a引用沒有改變。
b = a;//該操作后,b直接指向數(shù)組對象,不是b指向a,a再指向數(shù)組。
//所以改變a引用并不會對b引用造成影響,改變數(shù)組對象可以

但是我覺得說不通啊 我覺得應(yīng)該是 這個執(zhí)行順序啊 但是從結(jié)果看 我是錯的~~

a = [4,5,6];//改變的是a引用本身,沒有改變數(shù)組對象
b = a; // 這邊還是指向引用
a.pop();

早上在知乎翻到的 看了他們的答案還是有點蒙蔽 有點蒙蔽 大佬能不能簡明扼要的解答下
我有點菜 望不吝賜教

回答
編輯回答
櫻花霓

題里面的a和b好比一個鉤子,勾住了他們對應(yīng)的數(shù)組。
第一段里面a先勾住了[1,2,3],b通過a也勾住了[1,2,3],這時候a松開鉤子又伸出來勾住了[4,5,6],所以b還是[1,2,3]。
第二段里面a和b都勾住了[1,2,3],所以當(dāng)a通過鉤子處理[1,2,3]的時候,b還在鉤著[1,2,3],肯定也會受到影響。

就好比一個鐵棍,a和b兩個人用手握著兩端,a握著握著感覺無聊,輕輕敲了兩下,b當(dāng)然能感覺到。

要是沒看明白的話建議再去看看js的堆棧概念。

2018年4月9日 03:38
編輯回答
柚稚

[1,2,3]是一幢樓,
[4,5,6]也是一幢樓,
a和b是兩塊門牌號鐵皮。

var a = [1,2,3];  //把a(bǔ)牌號掛到 123樓門口
var b = a;        //把b牌號掛到 a牌號所在的樓門口,即123樓
a = [4,5,6];      //把a(bǔ)牌號摘下來,掛到了456樓的門口
alert(b);  //[1,2,3]  //此時b牌號依舊掛在123樓門口,b即代表著123樓


var a = [1,2,3];    //把a(bǔ)牌號掛到 123樓門口
var b = a;          //把b牌號掛到 a牌號所在的樓門口,即123樓
a.pop();            //把a(bǔ)牌號所在的樓拆掉頂層,此時a牌號仍舊掛在123樓門口,那就拆3層
alert(b);  //[1,2]  //b牌號仍舊掛在 原123樓門口,但此時只剩12兩層
2018年4月11日 15:55
編輯回答
萌二代

同樣,面試時遇到的。值引用的問題。
ab都引用同一個值,當(dāng)你改變a的引用,并不影響。但改變引用值,對吧,這里大家都明白!
簡單說=是一個賦值過程!所以a=[2,3,4]又創(chuàng)建了一個引用值。

clipboard.png

var a = {id: 1};
var b = a;
a = {id: 2};
console.log(b); // _> {id: 1};
2017年9月27日 05:53
編輯回答
櫻花霓
a.pop();//改變的是數(shù)組對象,a引用沒有改變。
b = a;//該操作后,b直接指向數(shù)組對象,不是b指向a,a再指向數(shù)組。
//所以改變a引用并不會對b引用造成影響,改變數(shù)組對象可以

已經(jīng)說得很清楚了

2018年2月19日 08:35