2 votes

Pourquoi ne peut-on pas utiliser la fonction des arguments dans les différents navigateurs ?

Je veux savoir pourquoi les résultats de l'exécution du code suivant dans les différents navigateurs sont différents ?

(function () {
   //will alert 1, 2, 3 in IE 9, Firefox 8+, Chrome 15,
   // Opera 11 but not in IE 7, 8 and Safari 5
    for (var a in arguments) 
        alert(arguments[a]);
})(1,2,3);

4voto

Peter Wilkinson Points 2228

Parce que les navigateurs ont des implémentations différentes de l'objet arguments. Pour une méthode inter-navigateurs, utilisez plutôt la propriété length.

(function () {
        for (var i=0, nLength = arguments.length; i < nLength; i++) {
            alert(arguments[i]);
        }
    })(1,2,3);

0voto

piersadrian Points 1398

El arguments n'est en fait pas un tableau, bien qu'il se comporte comme tel à certains égards. Il s'agit d'un objet spécial qui ne possède pas la plupart des caractéristiques d'un tableau JavaScript. array par défaut (bien que vous puissiez appliquer ces méthodes manuellement à l'aide de la fonction apply() ), et comprend un length propriété.

Afin d'accéder aux arguments eux-mêmes, il suffit d'itérer sur les éléments suivants arguments avec un objet standard for boucle. La méthode JavaScript for-in travaille sur le contenu de array à quelques exceptions près, mais pas celui-ci. sous forme de tableau structure.

for (var i = 0, numArgs = arguments.length; i < numArgs; i++) {
    console.log( arguments[i] );
}

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X