Это происходит в результате размышления о письменном тестовом вопросе. Обычно никто не изменяет значение параметра внутри функции. Это обсуждается только здесь. Есть три способа изменить его.
1. Непосредственно измените формальные параметры при объявлении функции.
Скопируйте код кода следующим образом:
функция f1(a) {
предупреждение(а);
a = 1;//Изменяем формальный параметр a
предупреждение (1 === а);
предупреждение (1 === аргументы [0]);
}
ф1(10);
Функция f1 определяет параметр a. При вызове передается параметр 10, сначала выводится 10, a изменяется на 1, дважды выскакивает true, а a и аргументы[0] равны 1.
2. Измените объект аргументов внутри функции.
Скопируйте код кода следующим образом:
функция f2(a) {
предупреждение(а);
аргументы[0] = 1 //Изменить аргументы
предупреждение (1 === а);
предупреждение (1 === аргументы [0]);
}
Эффект тот же, что и у функции f1.
3. Локальные переменные, объявленные внутри функции, имеют те же имена, что и формальные параметры.
Скопируйте код кода следующим образом:
функция f3(a) {
предупреждение(а);
var a = 1;//Объявляем локальную переменную a и присваиваем ей значение 1
предупреждение (1 === а);
оповещение(аргументы[0]);
}
f3(10);
Функция f3 определяет формальный параметр a. Локальная переменная a объявлена внутри функции и ей присвоено значение 1, но a здесь по-прежнему является параметром a. Это можно доказать тем фактом, что аргументы [0] появляются в строке. end изменяется на 1.
4. Если вы просто объявляете локальную переменную a, не присваивая ей значения, ситуация будет другой.
Скопируйте код кода следующим образом:
функция f3(a) {
var a;//Только объявление, без присвоения
предупреждение(а);
оповещение(аргументы[0]);
}
f3(10);
На данный момент всех всплывающих окон 10, а не неопределенных.