En Javascript, los parámetros pasados se pueden modificar dentro de la función, de la siguiente manera
Copie el código de código de la siguiente manera:
función func1(nombre) {
nombre = 'lirio';
alerta(nombre);
}
func1('jack');//salida lirio
Veamos otro ejemplo
Copie el código de código de la siguiente manera:
funcion fun1(n) {
este.nombre = n;
}
funcion fun2(nombre) {
fun1.call(esto,'lirio');
alerta(nombre);
}
fun2("jack");//salida "jack"
La función fun1 quería cambiar el parámetro al llamar a fun2 a "lily", pero falló. Lo que aparece sigue siendo "jack". Piensa en ¿por qué?
De hecho, fun1 todavía tiene la capacidad de modificar los parámetros al llamar a fun2, usando el atributo de llamada.
Copie el código de código de la siguiente manera:
funcion fun1() {
arguments.callee.caller.arguments[0] = 'lirio';
}
funcion fun2(nombre) {
fun1.call(este,nombre);
alerta(nombre);
}
fun2("jack");//salida "lirio"
Se puede ver que la pila de llamadas de la función interna es visible para la función externa y puede modificarse.