局部变量对全局变量修改出现的问题
[javascript]
var x = [1,2,3], o = [];
document.body.onclick = function(){
o[0] = ‘new’;
o = x;
alert(o);
}
这样一段代码你觉得多次输出的结果是一样吗?如果不一样知道为什么吗?
结果是不一样,有点意思噢,第一次结果[1,2,3],但再次点击后结果为['new',2,3]。
导致结果不一样又是指针搞的鬼,这不去认真看真不会发觉,第一次o=x后,由于o与x相同,x o被改成同一指针的引用了,相当于o=x=[1,2,3]。
要解决这问题把var x = [1,2,3], o = [];这样的全局变量放到内部去就可以了。
[javascript]
document.body.onclick = function(){
var x = [1,2,3], o = [];
o[0] = ‘new’;
o = x;
alert(o);
}
这样多少点击后的结果也是一样的。