函数中使用的变量

时间:2012-03-16 21:55:41

标签: actionscript-3 function variables parameters

我有一个愚蠢的问题。我得到了这个变量:

var type:int;

和这个功能:

private function test(type:int):void {
}

当我调用该函数并抛出我的变量类型

test(type);

是否存在编译器混淆的可能性,因为我的变量与函数的参数(type = type)具有相同的名称?我不确定这个话题。通常我会像这样编写函数的参数(如果出现这种情况):     私有函数测试(_type:int):void

只是为了确保名称不完全匹配(我希望你知道我的意思)。

2 个答案:

答案 0 :(得分:3)

在你的函数测试中,type将是你传入的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,不会这也不会产生任何影响。

答案 1 :(得分:2)

不。

test(type)将始终引用名为type的变量,而不是名为type的参数,因为在函数外部无法访问参数变量。

但是,如果在测试函数中你在那时调用了test(type),它将引用参数变量类型,因为本地范围优先(为了示例,让我们忽略调用这样的测试的事实会导致要无休止地调用的函数。)

如果你确实想在函数中引用你的全局变量,你总是可以使用'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