Переменная-функция и переменная-функция имеют одинаковые имена. Как получить доступ? - PullRequest
0 голосов
/ 10 января 2012

Мне было интересно, как javascript (если это возможно) получает доступ к переменной, имя которой совпадает с именем переменной функции.

function myfunc(var1)
{
    var var1 = "World";
    alert(var1);
}

Как я могу указать функции, какую переменную var1 выводить на печать?

Ответы [ 2 ]

6 голосов
/ 10 января 2012

Это фактически не определяет вторую переменную с тем же именем.Даже с помощью оператора var вы просто перезаписываете параметр функции с тем же именем.

Просто присвойте второй переменной уникальное имя.

(Кстати, даже если это действительно сработалоэто все равно будет плохой идеей, потому что это сделает ваш код трудным для чтения.)

3 голосов
/ 10 января 2012

nnnnnn правильно, я проверял это. Доступ к аргументам, передаваемым в функцию, можно получить двумя способами: по имени параметра и через переменную arguments. arguments[0] будет значением первого параметра.

В приведенном ниже примере вы ожидаете 2 оповещения, первое из которых говорит "Hello", а второе - "World". Но они оба говорят "World", доказывая, что присвоение var1 фактически изменяет значение аргумента, передаваемого в функцию.

function myfunc(var1) {
    var var1 = "World";
    alert(arguments[0]);
    alert(var1);
}

myfunc("Hello");
...