переменные, используемые в функциях - PullRequest
0 голосов
/ 17 марта 2012

У меня глупый вопрос.Я получил эту переменную:

var type:int;

и эту функцию:

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

, когда я вызываю функцию и добавляю в мою переменную типвероятность того, что компилятор запутается, потому что моя переменная имеет то же имя, что и параметр функции (type = type)?Я не уверен в этой теме.Обычно я пишу параметр моей функции следующим образом (если такой случай имеет место): тест закрытой функции (_type: int): void

просто для того, чтобы убедиться, что имена не совсем совпадают (я надеюсь, вы знаетечто я имею в виду).

Ответы [ 2 ]

3 голосов
/ 17 марта 2012

внутри вашего функционального теста, type будет любым значением, которое вы передаете.

Рассмотрим следующий код:

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

Что касается передачи переменной с тем же именем, то это тоже не будет иметь значения.

2 голосов
/ 17 марта 2012

Неа.

test (тип) всегда будет ссылаться на вашу переменную с именем 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
...