如果该常量仅与该函数的运行相关,那么在函数内声明常量是否存在任何内在错误?
作为一个简单的例子,而不是这样做:
private const PROGRESS_BAR_MAX_VALUE:Number = 110;
private function checkProgress():void
{
if(progress >= PROGRESS_BAR_MAX_VALUE)
{
do.something();
}
}
我会这样写:
private function checkProgress():void
{
const MAX_VALUE:Number = 110;
if(progress >= MAX_VALUE)
{
do.something();
}
}
答案 0 :(得分:3)
不在函数内声明常量的两个原因:
通常常量是有意义的。即使你认为它不会在函数之外使用,你可能也错了。请记住文本控件中的那些愚蠢的mx_internal填充,这对于精确的文本测量和布局是绝对必要的。 在实践中将私人常数改为公共是很常见的。如果您需要针对相同责任区域的其他实现,则可能会使用相同的常量。如果某个类以某种方式使用此值,则外部类通常需要它来预测其行为。在您的情况下,此值可能会变为函数参数,在这种情况下,它应声明为具有默认值的参数,而不是常量。
ActionScript通常不是人们学习的第一种编程语言,人们在使用ActionScript时仍然必须使用其他语言。人们期望在课堂上保持不变,而不是在功能水平上。因此,对于大多数人来说,在函数内部看到一个常量是很困惑的。
此外,请确保您的值确实是一个常数。如果是标签的某些文字,如果必须添加本地化怎么办?如果它是一些延迟选项,如果他们需要从配置文件中读取它怎么办?您的“进度条最大值”看起来不像是一个常量的主题。
答案 1 :(得分:1)
没有绝对没有错。
只要值永远不会改变, 就会<{1}}。这让你的代码更容易维护,甚至可以节省一些内存,我听说过。
如果函数只在该函数的范围内使用,则应在函数中声明一个变量。
因此,如果您要创建一个永不改变且仅应在一个函数中使用的变量,则可以在函数中声明CONST
。