Maison  >  Article  >  interface Web  >  Explication détaillée de la fonction arguments en JavaScript (avec exemples)

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

不言
不言avant
2018-10-23 15:43:482335parcourir
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
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]
function foo() {
    console.log(typeof arguments);
}

foo(1, "foo", false, {name: "bar"}); // object
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]
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"]
  1. épissure

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

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

function sayHi(...arguments) {
    console.log(arguments);
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
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
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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer