Proviene de pensar en una pregunta de prueba escrita. Normalmente, nadie modificará el valor del parámetro dentro de la función. Solo se analiza aquí. Hay tres formas de modificarlo.
1. Modificar directamente los parámetros formales al declarar la función.
Copie el código de código de la siguiente manera:
función f1(a) {
alerta(a);
a = 1;//Modificar el parámetro formal a
alerta(1 === a);
alerta(1 === argumentos[0]);
}
f1(10);
La función f1 define el parámetro a. Al llamar, se pasa el parámetro 10, 10 aparece primero, a se modifica a 1, verdadero aparece dos veces y los argumentos a y [0] son ambos 1.
2. Modificar a través del objeto de argumentos dentro de la función.
Copie el código de código de la siguiente manera:
función f2(a) {
alerta(a);
argumentos[0] = 1; //Modificar argumentos
alerta(1 === a);
alerta(1 === argumentos[0]);
}
El efecto es el mismo que el de la función f1.
3. Las variables locales declaradas dentro de la función tienen el mismo nombre que los parámetros formales.
Copie el código de código de la siguiente manera:
función f3(a) {
alerta(a);
var a = 1;//Declarar la variable local a y asignarle el valor 1
alerta(1 === a);
alerta(argumentos[0]);
}
f3(10);
La función f3 define el parámetro formal a, y la variable local a se declara dentro de la función y se le asigna un valor de 1, pero aquí todavía hay un parámetro a, lo que se puede probar por el hecho de que los argumentos [0] que aparecen al final se modifica a 1.
4. Si simplemente declara la variable local a sin asignar un valor, la situación es diferente.
Copie el código de código de la siguiente manera:
función f3(a) {
var a;//Solo declaración, sin asignación
alerta(a);
alerta(argumentos[0]);
}
f3(10);
En este momento, todas las ventanas emergentes son 10, no indefinidas.