牛骨文教育服务平台(让学习变的简单)
博文笔记

30、关于赋值和引用

创建时间:2016-07-12 投稿人: 浏览次数:133
关于  =   :
        赋值: ( number string boolean …… )

        引用: ( object(数组也为object)  function )


1、赋值
var a=1;
var b=a;
b++;
alert(a);//=1
alert(b);//=2
申明了变量a并赋值=1,然后新申明变量b,赋值=a,那么此时b就=1。下一步,变量b自增1,最后弹出a、b 。结果很明显,也很正常。


2、引用
var a1=[1,2];
var a2=a1;
a2.push(3);
alert(a1);//=1,2,3
alert(a2);//=1,2,3
申明了变量a1并赋值数组,然后新申明变量a2,赋值=a1,那么此时a2=数组[1,2]。操作a2加入新元素3,那么a2就为[1,2,3],按照常理来说a1应该不变。而结果是a1也等于[1,2,3]。这是因为数组的赋值是为引用,在js中所有对象的赋值都为引用。虽然a2=a1,但不不像变量那样单独赋值,而是引用了数组a1,而操作了a2,就相当等于同时操作了a1。就好比现实中,某人买了一套房子,然后他结婚了,再复制了一份钥匙给妻子,妻子对房子的操作与丈夫对房子的操作是等效的。


3、对象赋值
那么如何对象赋值呢,而不是简单的引用?
var a3=[1,2];
var a4=[];
for(var i in a3)
{
a4.push(a3[i]);
}
a4.push(3);
alert(a3);//=1,2
alert(a4);//=1,2,3

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。