重复变量定义的后果是什么?

时间:2013-06-26 20:59:57

标签: actionscript-3

我的代码如下:

var variableX:uint = something;    

if (variableX > 1)
{
  var variableY:uint = foo;
}
else
{
  var variableY:uint = bar;
}

在FlashDevelop中编译时,编译器会发出以下警告:

Warning: Duplicate variable definition.

作为AS3的初学者和编程我不喜欢编译器警告。编辑器正眯着眼睛看着我说:“好吧,伙计,这次我会让你离开。但我警告你!”然后不告诉我我正在做什么是错的。

当我做这样的事情时,我应该注意什么?我的意思是我可以明显地在if之外定义变量然后这不会是一个问题,但也许还有更多的东西呢?或者编译器只是给出了一个有用的推动说“嘿,你可能不小心创建了两个不同的同名变量”?

1 个答案:

答案 0 :(得分:4)

你对警告的评估是正确的。它只是让你知道已经有一个带有该名称的范围变量,你将要重新定义它。这样您就不会意外地覆盖变量。虽然如果您在此页面上查看变量提升,它们可能看起来不在同一范围内,您将看到该交易的内容:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f9d.html

  

缺乏块级范围的一个有趣的含义是   只要声明,您就可以在变量声明之前读取或写入变量   它在函数结束前声明。这是因为   称为提升的技术,这意味着编译器全部移动   变量声明到函数的顶部。例如,   以下代码编译即使初始trace()函数为   num变量在声明num变量之前发生:

我个人倾向于将自己的定义放在首位,以避免额外的警告让我错过更重要的问题。已经离开AS3一段时间了,但是在大型项目中,人们会让事情发生,最终会发出100s-1000s的警告,相关的警告也会被埋没。