Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la fonction arguments en JavaScript (avec exemples)

不言
Libérer: 2018-10-23 15:43:48
avant
2393 Les gens l'ont consulté
Cet article vous apporte une explication détaillée de la fonction arguments en JavaScript (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Vue d'ensemble

Les fonctions de JavaScript diffèrent des autres langages orientés objet de plusieurs manières.

  1. Il n'y a pas de surcharge de fonctions

  2. Il existe un argument d'objet de type tableau

1. Surcharge de fonctions

Pour faire simple, JAVA permet à plusieurs fonctions d'une même classe d'avoir le même nom de fonction, mais des déclarations de paramètres différentes.

Mais JS ne prend pas en charge la surcharge de fonctions :

function foo(num) {
    console.log(num + 100)
}
function foo(num) {
    console.log(num + 200)
}

foo(100);  // 300
Copier après la connexion
Si deux fonctions portant le même nom sont définies dans js, alors le nom n'appartient qu'à la fonction définie ultérieurement.

2. Tableau de classe Arguments

L'objet arguments de fonction est une variable locale disponible dans toutes les fonctions (non fléchées) et est un objet de type tableau. Vous pouvez référencer les paramètres (réels) d'une fonction dans une fonction à l'aide de l'objet arguments.

function foo() {
    console.log(arguments);
}

foo(1, "foo", false, {name: "bar"}); // [1, "foo", false, object]
Copier après la connexion
function foo() {
    console.log(typeof arguments);
}

foo(1, "foo", false, {name: "bar"}); // object
Copier après la connexion
Ainsi, arguments est un objet de style tableau avec une propriété de longueur et des indices pour indexer les éléments.

Explication détaillée de la fonction arguments en JavaScript (avec exemples)

3. Attributs des arguments

longueur

function foo(num1, num2, num3) {
    console.log(arguments)
}

foo(1);  // [1]
Copier après la connexion
attribut longueur Indique le nombre réel de paramètres passés dans la fonction, et non le nombre de paramètres formels lorsque la fonction a été déclarée.

appelé appelé représente la fonction elle-même, nous pouvons l'appeler via l'appelé dans la fonction.

4. Convertir en tableau réel

  1. slice

l'objet arguments ne prend pas en charge d'autres méthodes de tableau, mais vous pouvez utilisez Function .call pour appeler indirectement.

function sayHi() {
    console.log(Array.prototype.slice.call(arguments, 0))
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
Copier après la connexion
  1. épissure

function sayHi() {
    console.log(Array.prototype.splice.call(arguments, 0));
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
Copier après la connexion
  1. Array.from

function sayHi() {
    console.log(Array.from(arguments));
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
Copier après la connexion
  1. Opérateur d'extension

function sayHi(...arguments) {
    console.log(arguments);
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
Copier après la connexion
Mode strict

La performance des arguments en mode strict et en mode non strict. L'affichage n'est pas le même.

// 严格模式
function foo(a, b) {
    "use strict";
    console.log(a, arguments[0]);
    a = 10;
    console.log(a, arguments[0]);
    arguments[0] = 20;
    console.log(a, arguments[0]);
    b = 30;
    console.log(b, arguments[1])
}
foo(1);
输出:
1 1
10 1
10 20
30 undefined

// 非严格模式
function foo(a, b) {
    console.log(a, arguments[0]);
    a = 10;
    console.log(a, arguments[0]);
    arguments[0] = 20;
    console.log(a, arguments[0]);
    b = 30;
    console.log(b, arguments[1]);
}
foo(1);
输出:
1 1
10 10
20 20
30 undefined
Copier après la connexion
En mode non strict, les valeurs des paramètres, les paramètres réels et les arguments transmis seront partagés. Lorsque rien n'est transmis, les valeurs réelles et les arguments ne seront pas partagés.

En mode strict, les valeurs des paramètres et arguments réels ne sont pas partagées.


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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal