Maison  >  Article  >  interface Web  >  Javascript peut-il implémenter la surcharge de fonctions ?

Javascript peut-il implémenter la surcharge de fonctions ?

青灯夜游
青灯夜游original
2022-01-18 14:52:002138parcourir

Javascript peut implémenter une surcharge de fonctions. Il y a un objet arguments à l'intérieur de la fonction JavaScript. Vous pouvez obtenir la liste des paramètres via l'objet arguments. Vous pouvez déterminer le nombre de paramètres et utiliser différentes méthodes pour simuler l'effet de surcharge de la fonction.

Javascript peut-il implémenter la surcharge de fonctions ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

Les fonctions JavaScript prennent-elles en charge la surcharge ? Est-il possible d’implémenter une surcharge de fonctions ? Concernant ce problème, il y a deux points principaux. Premièrement, les fonctions JavaScript ; deuxièmement, la surcharge.

Parlons d’abord du rechargement. En termes simples, ce qu'on appelle la surcharge est une situation dans laquelle des fonctions ou des méthodes ont le même nom mais des listes de paramètres différentes. De telles fonctions ou méthodes portant le même nom et des paramètres différents sont appelées fonctions ou méthodes surchargées. Par conséquent, la surcharge nécessite principalement deux points : premièrement, le même nom de fonction. Deuxièmement, différents paramètres de fonction.

Après avoir clarifié la définition de la surcharge, revenons à JavaScript. En remontant à ses racines, lorsque nous parlons désormais de JavaScript, nous pouvons penser à ECMAScript, le standard de JavaScript. Alors, quelles spécifications sont faites pour les fonctions dans cette norme ?

Tout d'abord, ECMAScript n'a aucune notion de signature de fonction, car ses paramètres sont représentés par des tableaux contenant zéro ou plusieurs valeurs. Sans signatures de fonction, une véritable surcharge est impossible.

Deuxièmement, si deux fonctions portant le même nom sont définies dans ECMAScript, le nom n'appartient qu'à la fonction définie ultérieurement, comme suit :

function add(num){
    return num+1;
}
function add(num){
    return num+2;
}
var result = add(4);  //结果为6

Dans l'exemple ci-dessus, la fonction add() est définie deux fois, cependant, lorsque nous appelez-le, on appelle directement la deuxième fonction, ce qui montre qu'en JavaScript, la fonction définie plus tard écrasera la fonction définie en premier.

Cela dit, peut-on conclure que JavaScript ne supporte pas la surcharge de fonctions ?

Permettez-moi de vous présenter un objet arguments en JavaScript. Premièrement, les paramètres de fonction ECMAScript sont un peu différents des paramètres de fonction dans d'autres langages. Les fonctions ECMAScript ne se soucient pas du nombre et du type de paramètres transmis. Autrement dit, après avoir défini une fonction pour n'accepter que deux paramètres, vous pouvez toujours transmettre zéro ou plusieurs paramètres lors de l'appel. Cela ne provoquera pas d’erreur. La raison réside dans l’objet arguments. Dans ECMAScript, les paramètres d'une fonction sont toujours stockés dans un tableau, et ce tableau est accessible via l'objet arguments. Utilisez donc simplement l'attribut length pour déterminer combien de paramètres ont été transmis lors de l'appel de la fonction.

En parlant de ça, on peut essayer d'écrire comme ceci :

function add(num1, num2){
    if(arguments.length == 1){
        alert("你输入的只有一个数字:"+arguments[0]+" 请重新输入");
    }else if(arguments.length == 2){
        alert("你输入数字的和为:" + arguments[0]+arguments[1]);
}
}

A travers cet exemple, on peut voir qu'en vérifiant le nombre de paramètres dans la fonction passée, la fonction JavaScript peut réagir différemment, ce qui peut indirectement atteindre un objectif de surcharge .

Ainsi, JavaScript peut imiter la surcharge de fonctions.

【Recommandations associées : Tutoriel d'apprentissage Javascript

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