Actually,simplicity is not simple

局部变量对全局变量修改出现的问题

[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);
}

这样多少点击后的结果也是一样的。

日志信息 »

该日志于2010-01-29 00:37由 asins 发表在Develop分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过评论 RSS订阅这个日志的所有评论。

相关日志 »

发表评论 »

captcha
请输入验证码