В Javascript переданные параметры можно изменить внутри функции следующим образом:
Скопируйте код кода следующим образом:
функция func1(имя) {
имя = 'лилия';
оповещение (имя);
}
func1('jack');//выводим лилию
Давайте посмотрим на другой пример
Скопируйте код кода следующим образом:
функция fun1(n) {
это.имя = п;
}
функция fun2(имя) {
fun1.call(это,'лилия');
оповещение (имя);
}
fun2("Джек");//выводим "Джек"
Функция fun1 хотела изменить параметр при вызове fun2 на «lily», но это не удалось. То, что всплывает, по-прежнему «джек». Подумайте, почему?
Фактически, fun1 по-прежнему имеет возможность изменять параметры при вызове fun2, используя атрибут caller.
Скопируйте код кода следующим образом:
функция fun1() {
аргументы.callee.caller.arguments[0] = 'лилия';
}
функция fun2(имя) {
fun1.call(это,имя);
оповещение (имя);
}
fun2("джек");//выводим "лилия"
Видно, что стек вызовов внутренней функции виден внешней функции и может быть изменен.