天天看點

JS:js 數組指派問題 :值傳遞還是引用?

轉載于知乎


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

面試時被問到這樣一個問題,竟然從來沒試過... 當時直接的了解,數組是引用類型,應該是傳遞的是引用,so b也是[4,5,6],于是錯了。js數組傳遞是跟基本類型一樣建立副本嗎?

我又做了如下測試:

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

這樣好像又是引用傳遞了? 暈了

答案:

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

作者:Intopass

連結:https://www.zhihu.com/question/26042362/answer/31903017

來源:知乎

著作權歸作者所有,轉載請聯系作者獲得授權。

JS:js 數組指派問題 :值傳遞還是引用?

繼續閱讀