Isso vem da reflexão sobre uma questão de teste escrita. Normalmente, ninguém modificará o valor do parâmetro dentro da função. É discutido apenas aqui. Existem três maneiras de modificá-lo.
1. Modifique diretamente os parâmetros formais ao declarar a função
Copie o código do código da seguinte forma:
função f1(a) {
alerta(a);
a = 1;//Modifica o parâmetro formal a
alerta(1 === a);
alerta(1 === argumentos[0]);
}
f1(10);
A função f1 define o parâmetro a. Ao chamar, o parâmetro 10 é passado, 10 é exibido primeiro, a é modificado para 1, true é exibido duas vezes e a e argumentos[0] são ambos 1.
2. Modifique através do objeto de argumentos dentro da função
Copie o código do código da seguinte forma:
função f2(a) {
alerta(a);
argumentos[0] = 1; //Modifica argumentos
alerta(1 === a);
alerta(1 === argumentos[0]);
}
O efeito é o mesmo da função f1.
3. As variáveis locais declaradas dentro da função possuem o mesmo nome dos parâmetros formais.
Copie o código do código da seguinte forma:
função f3(a) {
alerta(a);
var a = 1; //Declara a variável local a e atribui a ela o valor 1
alerta(1 === a);
alerta(argumentos[0]);
}
f3(10);
A função f3 define o parâmetro formal a, e a variável local a é declarada dentro da função e recebe o valor 1, mas a aqui ainda é o parâmetro a, o que pode ser comprovado pelo fato de que os argumentos[0] que aparecem no final é modificado para 1.
4. Se você apenas declarar a variável local a sem atribuir um valor, a situação é diferente.
Copie o código do código da seguinte forma:
função f3(a) {
var a;//Somente declaração, sem atribuição
alerta(a);
alerta(argumentos[0]);
}
f3(10);
Neste momento, todos os pop-ups são 10, não indefinidos.