您的位置:首页 > Web前端 > JavaScript

Javascript的变量作用域居然可以跨越多个函数!

2006-08-22 23:22 483 查看
今天,编写一个JavaScript的代码,是这样子的:

function a(){

...

for(i=0;i<abc.length;i++){

...

b();

...

}

...

}

function b(){

...

for(i=0;i<def.length;i++){

...

}

...

}

这样2个JavaScript函数。然而,a函数仅仅执行了一次循环,就跳出了for循环。它本应该执行多次循环。

我查了一整天代码,刚才终于让我发现了错误的原因。

原来,Javascript的变量,生命周期管理有问题。函数a和b的局部变量i, JavaScript认为它们是同一个变量。

这样,在函数b中执行完循环后,函数a中的i值已经超过了条件,所以每一次都只执行一次a的for循环。

我把b函数中的i改成j之后,就正常了!

这种变量生命周期的管理,确实是有悖常理的。 我使用的是IE7,不知道这是不是JavaScript的规范?还是IE7自身的实现有问题?

看来,我们必须在JavaScript编码中,注意尽量避免使用同名的变量,以免发生变量名冲突这样的问题。这种问题极其隐蔽,很难发现!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: