clear=function(ary){ary=[];};a=[1,2,3];clear(a);console.log(a);在调用clear(a)的时候,不是已经把进行了赋值a=[]?为什么console.log(a)还是输出[1,2,3]?
2 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
清空函数体用ary.length=0,手机不方便,过会给你解释原因。原因来了:传参时,ary是[1,2,3]的引用(类似于指针);改变ary的内容会反映到外面,如arr.push(4);但是直接覆盖ary为[]则相当于ary指向新的对象,不再指向原来的[1,2,3],但是[1,2,3]还在那,即你没有对其做任何改动.
添加回答
举报
0/150
提交
取消