30、关于赋值和引用
关于 = :
赋值: ( number string boolean …… )
引用: ( object(数组也为object) function )
赋值: ( 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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C#中如何定义数组
- 下一篇: [thinkPHP5项目实战_06]引入前台页面