Actionscript 3 函数中使用的变量
我有一个愚蠢的问题。我得到了这个变量:Actionscript 3 函数中使用的变量,actionscript-3,function,variables,parameters,Actionscript 3,Function,Variables,Parameters,我有一个愚蠢的问题。我得到了这个变量: var type:int; 这个功能是: private function test(type:int):void { } 当我调用函数并输入变量类型时 test(type); 是否有可能因为我的变量与函数的参数(type=type)同名而导致编译器混淆?我对这个话题没有把握。通常我会这样写函数的参数(如果发生这种情况): 私有函数测试(_类型:int):无效 只是为了确保名字不完全匹配(我希望你知道我的意思) 在函数测试中,类型将是您传入的任何in
var type:int;
这个功能是:
private function test(type:int):void {
}
当我调用函数并输入变量类型时
test(type);
是否有可能因为我的变量与函数的参数(type=type)同名而导致编译器混淆?我对这个话题没有把握。通常我会这样写函数的参数(如果发生这种情况):
私有函数测试(_类型:int):无效
只是为了确保名字不完全匹配(我希望你知道我的意思) 在函数测试中,类型将是您传入的任何int。本地范围将覆盖全局范围 考虑以下代码:
var type:int = 5
function test(type:int = 6):int{
return type;
}
trace("type is: "+ type); //type is: 5
trace("inside test: " + test()); //inside test: 6
trace("passing 7: " + test(7)); //passing 7: 7
trace("passing type: " + test(type)); //passing type: 5
type = 10
trace("passing type again: " + test(type)); //passing type again: 10
对于传递具有相同名称的var来说,这也不会有什么不同 在函数测试中,类型将是您传入的任何int。本地范围将覆盖全局范围 考虑以下代码:
var type:int = 5
function test(type:int = 6):int{
return type;
}
trace("type is: "+ type); //type is: 5
trace("inside test: " + test()); //inside test: 6
trace("passing 7: " + test(7)); //passing 7: 7
trace("passing type: " + test(type)); //passing type: 5
type = 10
trace("passing type again: " + test(type)); //passing type again: 10
对于传递具有相同名称的var来说,这也不会有什么不同 没有
test(type)将始终引用名为type的变量,而不是名为type的参数,因为在函数之外无法访问参数变量
但是,如果在测试函数中调用了test(type),那么它将引用参数变量类型,因为局部作用域优先(为了示例起见,让我们忽略这样调用test会导致函数被无限调用的事实)
如果确实希望在函数中引用全局变量,则始终可以使用“this”关键字检索该变量
一些例子:
private var type:int = 4;
private function test(type:int):void{
trace(type,this.type)
}
trace(type);//outputs: 4
test(3);//outputs: 3, 4
test(type);//outputs: 4, 4
没有
test(type)将始终引用名为type的变量,而不是名为type的参数,因为在函数之外无法访问参数变量
但是,如果在测试函数中调用了test(type),那么它将引用参数变量类型,因为局部作用域优先(为了示例起见,让我们忽略这样调用test会导致函数被无限调用的事实)
如果确实希望在函数中引用全局变量,则始终可以使用“this”关键字检索该变量
一些例子:
private var type:int = 4;
private function test(type:int):void{
trace(type,this.type)
}
trace(type);//outputs: 4
test(3);//outputs: 3, 4
test(type);//outputs: 4, 4
你可以简单地把变量命名为其他非保留关键字的东西来测试你的理论,我认为你可能是对的,你可以简单地把变量命名为其他非保留关键字的东西来测试你的理论,我认为你可能是对的,这并不是说不能访问
类型
变量,而是局部作用域胜过类作用域。如果您将函数参数命名为其他名称,则可以使用tyoe
,而不使用“this”。因为它将解析为类范围。非常感谢。现在我越来越清楚了。我终于明白了!:)并不是说不能访问类型
变量,而是本地作用域胜过类作用域。如果您将函数参数命名为其他名称,则可以使用tyoe
,而不使用“this”。因为它将解析为类范围。非常感谢。现在我越来越清楚了。我终于明白了!:)