AS3中变量问题的范围

时间:2011-05-06 02:07:49

标签: scope

        // content loaders
        if (_contentLoaders != null)
        {
            // iterate through all the content loaders then dispose it
            for (var i:int = 0; i < _contentLoaders.length; i++)
            {
                _contentLoaders[i].dispose();

            }
            _contentLoaders.splice(0, _contentLoaders.length);
            _contentLoaders = null;
        }

        // text content loaders
        if (_textContentLoaders != null)
        {
            // iterate through all the text content loaders then dispose it
            for (var i:int = 0; i < _textContentLoaders.length; i++)
            {
                _textContentLoaders[i].dispose();
            }
            _textContentLoaders.splice(0, _textContentLoaders.length);
            _textContentLoaders = null;
        }

大家好,我多次遇到过这个问题(事实上它不应该是一个问题,如果我理解正确,那应该是一种语法设计就像那样)。

从上面的代码中,你看到2个for循环块,你看到我为每个块声明了变量i。我使用Flash v.10.2设置FlashDevelop运行此代码。它提示我错误说“重复变量定义”

我可以通过在这2个for-loop块之外声明变量i来解决这个问题,并为这两个块重用i。但对我自己来说,这并不是那么干净的代码。 我的问题是

  

“这是动作脚本的意图吗?   3会这样吗?通过限制   这种方式可变范围。或者它可以   修改后可以调整一些选项   编译器或说解释器   在这种情况下?“

提前致谢。

1 个答案:

答案 0 :(得分:0)

在第二个循环中将i的名称更改为j,或在for循环之外声明i,所有问题都将得到解决。

问题是,一旦你第一次声明i,它就存在于功能块的范围内,所以当你试图在块中进一步重新声明时,你就会收到错误。

顺便说一句,我个人认为在循环之外声明i没有任何问题。

这是AS3中的范围问题,您很可能也会在许多其他OOP语言中找到它。