代码一:vara=b=''a=1console.log(a)//打印1console.log(b)//打印''代码二:vara=b=[]a.push(1)console.log(a)//打印[1]console.log(b)//打印[1]为什么代码一两变量不等,而代码二两变量相等?
2 回答
慕后森
TA贡献1802条经验 获得超5个赞
这个涉及到传引用还是传值的问题。像数组这种对象,传的是引用,而不是直接复制一个传值。因此vara=b='',两个是不同地址的。而vara=b=[],a,b两个是指向相同地址
函数式编程
TA贡献1807条经验 获得超9个赞
换种写法你就明白了,实质上是这样的:代码一:b='';//(感谢2楼提醒,原先写的是varb='')vara=b;;a=1;//b是基本变量,a和b指向的不是同一个地址,两者的变动互不影响,所以a=1,b不会变代码二:b=[];vara=b;a.push(a);//b是引用变量,a=b,所以a和b指向同一个地址,所以a.push(1),b也变了
添加回答
举报
0/150
提交
取消