Maison >interface Web >js tutoriel >Que sont les arguments en js ? Comment utiliser les arguments en js

Que sont les arguments en js ? Comment utiliser les arguments en js

不言
不言original
2018-08-14 17:06:542946parcourir

Le contenu de cet article porte sur que sont les arguments en js ? L'utilisation d'arguments dans js a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

Objet de type tableau : arguments

Comme nous le savons tous, js est un langage très flexible. Lorsque nous appelons une fonction en js, nous transmettons souvent certains paramètres à la fonction. js stocke tous les paramètres transmis à cette fonction dans quelque chose appelé arguments, alors qu'est-ce que c'est exactement ?

Tout en js est un objet, même les tableaux et les fonctions de chaîne sont des objets. Donc, cette chose appelée arguments est également un objet, et c'est un objet spécial. Son nom d'attribut est basé sur la séquence des paramètres transmis. Le nom d'attribut du premier paramètre est « 0 » et le nom d'attribut du second. Le paramètre est '1', et ainsi de suite, et il a également un attribut de longueur, qui stocke le nombre de paramètres de fonction actuellement transmis. Nous appelons souvent ce type d'objet un objet de type tableau. Les objets de type tableau et les tableaux sont tous deux nés d'objets, mais les tableaux sont le frère aîné et ont beaucoup plus de jouets (méthodes) que les objets de type tableau ne sont que les frères plus jeunes qui ressemblent beaucoup à des tableaux.

Attendez une minute, ne viens-je pas de dire que les tableaux sont aussi des objets ? Qu'est-ce que cet objet semblable à un tableau maintenant ? Il n'y a aucun moyen, js est tellement flexible. Cet objet de type tableau stocke non seulement les paramètres transmis à la fonction, mais possède également d'autres attributs, qui seront discutés un par un plus tard.

Parce que les objets de type tableau et les tableaux ont beaucoup en commun, nous pouvons souvent utiliser la méthode d'appel pour permettre à l'objet de type tableau d'utiliser également certaines des méthodes du tableau, c'est-à-dire laisser le frère cadet jouer avec les jouets de son frère aîné, comme... , n'allons pas trop loin, cet article ne parle que d'arguments. Si vous voulez en savoir plus sur la façon dont les objets empruntent les méthodes de tableau, veuillez vous référer à cet article.

Voici un exemple :

function add() {
    if( arguments.length == 2 ){
        return arguments[0] + arguments[1];
    }else{
        return '传入参数不合法';
    }
}

console.log( add(2,3) );
console.log( add(1,2,3) );

Regardez le résultat :

Que sont les arguments en js ? Comment utiliser les arguments en js

Enfin, nous pouvons également voir qu'il existe un autre argument appelé Attribut de l'appelé , cet attribut représente une référence à la fonction actuelle. Pour faire simple, cet attribut stocke le code de la fonction que nous appelons. Lorsqu'il est vraiment incompréhensible, il s'agit à nouveau de console.log. il est temps de montrer vos compétences.

Enfin, on peut aussi voir que les arguments ont aussi un attribut appelé callee. Cet attribut représente une référence à la fonction actuelle, pour faire simple, cet attribut stocke le code de la fonction que nous appelons vraiment. Je n'arrive pas à le comprendre, il est temps pour console.log de montrer ses talents.

function showcallee() {
    var a = '这里是代码';
    var b = '这是另一段代码';
    var c = a + b;

    console.log(arguments.callee);

    return c;
}
showcallee();

Que sont les arguments en js ? Comment utiliser les arguments en js

Êtes-vous aussi choqué que moi quand vous voyez le résultat ? N'est-ce pas le code que j'ai écrit arguments.callee complètement ? utilisations merveilleuses des

arguments

1 Utilisez des arguments pour implémenter la surcharge de méthode

Ci-dessous, nous utilisons l'objet arguments pour implémenter. une fonction qui ajoute des paramètres Quel que soit le nombre de paramètres transmis, elle sera renvoyée après avoir ajouté les paramètres transmis.

function add() {
    var len = arguments.length,
        sum = 0;
    for(;len--;){
        sum += arguments[len];
    }
    return sum;
}

console.log( add(1,2,3) );   //6
console.log( add(1,3) );     //4
console.log( add(1,2,3,5,6,2,7) );   //26

Puisque js est un langage faiblement typé et n'a pas de mécanisme de surcharge, lorsque nous réécrivons une fonction, la fonction d'origine sera directement écrasée. Ici, nous pouvons utiliser des arguments pour déterminer les différentes opérations entrantes. sur le type et la quantité réels du paramètre, puis renvoient des valeurs différentes.

2. Utilisez arguments.callee pour implémenter la récursion

Voyons d'abord comment nous avons implémenté la récursion auparavant. Il s'agit d'une fonction qui règle les factorielles

function factorial(num) { 
    if(num<=1) { 
        return 1; 
    }else { 
        return num * factorial(num-1); 
    } 
}

Mais lorsque cette fonction devient une fonction anonyme, nous pouvons utiliser l'appelé pour récurer cette fonction .

function factorial(num) { 
    if(num<=1) { 
        return 1; 
    }else { 
        return num * arguments.callee(num-1); 
    } 
}

Bien que cette méthode soit facile à utiliser, il y a une chose à noter Afin de limiter la flexibilité de js et de rendre js strict, un nouveau mode strict est ajouté dans ECMAScript 4. En mode strict. , il nous est interdit d'utiliser var pour déclarer directement une variable globale. Bien sûr, ce n'est pas le problème. Le fait est que l'attribut arguments.callee est également interdit. Mais ce n'est pas un problème. ES6 a ajouté de nombreuses méthodes de déclaration de variables utiles et un nouveau sucre de syntaxe pour nous. En tant que frontal à la mode, apprenons rapidement la nouvelle syntaxe d'ES6.

Recommandations associées :

Quelles sont les méthodes pour implémenter la modularité JS ? Explication de la modularisation js

Qu'est-ce qu'un objet js ? Quels sont les types d’objets js ? Résumé des types d'objets js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn