2012-04-19 12 views

Respuesta

12

"¿Por qué cambia el valor de cambio what el valor de arguments[0]?"

Porque así es como está diseñado para funcionar. Los parámetros formales se asignan directamente a los índices del objeto argumentos.

Es decir, a menos estás en el modo estricto y su entorno lo soporta. Luego, actualizar uno no afecta al otro.

function hello(what) { 
    "use strict"; // <-- run the code in strict mode 
    what = "world"; 
    return "Hello, " + arguments[0] + "!"; 
} 
hello("shazow"); // "Hello, shazow!" 
+0

Oh ... En ese caso: ¿por qué está diseñado para funcionar de esa manera? ¿Y ese diseño está documentado en alguna parte? (no es que no confíe en usted, por supuesto, me gustaría un poco más de detalle) –

+0

Oh, espere, aquí vamos: "NOTA 1" en * 10.6 Argumentos objeto * de http: //www.ecma -international.org/publications/files/ECMA-ST/Ecma-262.pdf –

+0

@DavidWolever: el idioma es documento en la especificación ECMAScript. El modo estricto se introdujo en ECMAScript 5. –

Cuestiones relacionadas