Cela vient de la réflexion sur une question de test écrite. Normalement, personne ne modifiera la valeur du paramètre à l'intérieur de la fonction. Il est uniquement abordé ici. Il existe trois façons de le modifier.
1. Modifiez directement les paramètres formels lors de la déclaration de la fonction
Copiez le code comme suit :
fonction f1(a) {
alerte(a);
a = 1;//Modifier le paramètre formel a
alerte(1 === a);
alerte(1 === arguments[0]);
}
f1(10);
La fonction f1 définit le paramètre a. Lors de l'appel, le paramètre 10 est passé, 10 est affiché en premier, a est modifié en 1, true est affiché deux fois et a et les arguments [0] valent tous deux 1.
2. Modifier via l'objet arguments à l'intérieur de la fonction
Copiez le code comme suit :
fonction f2(a) {
alerte(a);
arguments[0] = 1; //Modifier les arguments
alerte(1 === a);
alerte(1 === arguments[0]);
}
L'effet est le même que celui de la fonction f1.
3. Les variables locales déclarées dans la fonction portent le même nom que les paramètres formels.
Copiez le code comme suit :
fonction f3(a) {
alerte(a);
var a = 1;//Déclarez la variable locale a et attribuez-lui la valeur 1
alerte(1 === a);
alerte(arguments[0]);
}
f3(10);
La fonction f3 définit le paramètre formel a. La variable locale a est déclarée à l'intérieur de la fonction et affectée d'une valeur de 1, mais a ici est toujours le paramètre a. Cela peut être prouvé par le fait que les arguments [0] qui apparaissent au niveau du paramètre. end est modifié à 1.
4. Si vous déclarez simplement la variable locale a sans attribuer de valeur, la situation est différente.
Copiez le code comme suit :
fonction f3(a) {
var a;//Déclaration uniquement, pas d'affectation
alerte(a);
alerte(arguments[0]);
}
f3(10);
À l'heure actuelle, toutes les fenêtres contextuelles sont au nombre de 10, non indéfinies.