JavaScript Comportement de la liste d'arguments d'une fonction


Exemple

arguments objets objet se comportent différemment en mode strict et non strict . En mode non strict , l'objet argument reflètera les modifications de la valeur des paramètres présents, mais en mode strict , toute modification de la valeur du paramètre ne sera pas répercutée dans l'objet argument .

function add(a, b){
    console.log(arguments[0], arguments[1]); // Prints : 1,2

    a = 5, b = 10;

    console.log(arguments[0], arguments[1]); // Prints : 5,10
}

add(1, 2);

Pour le code ci-dessus, l'objet arguments est modifié lorsque nous modifions la valeur des paramètres. Cependant, pour le mode strict , le même ne sera pas reflété.

function add(a, b) {
    'use strict';

    console.log(arguments[0], arguments[1]); // Prints : 1,2

    a = 5, b = 10;

    console.log(arguments[0], arguments[1]); // Prints : 1,2
}

Il est intéressant de noter que si l'un des paramètres n'est undefined , et que nous essayons de modifier la valeur du paramètre en mode strict ou non strict , l'objet arguments reste inchangé.

Mode strict

function add(a, b) {
    'use strict';

    console.log(arguments[0], arguments[1]); // undefined,undefined 
                                             // 1,undefined
    a = 5, b = 10;

    console.log(arguments[0], arguments[1]); // undefined,undefined
                                             // 1, undefined
}
add();
// undefined,undefined 
// undefined,undefined

add(1)
// 1, undefined
// 1, undefined

Mode non strict

function add(a,b) {

    console.log(arguments[0],arguments[1]);

    a = 5, b = 10;

    console.log(arguments[0],arguments[1]);
}
add();
// undefined,undefined 
// undefined,undefined

add(1);
// 1, undefined
// 5, undefined