Maison interface Web js tutoriel Explication détaillée des paramètres par défaut des fonctions de traitement dans les environnements ES5 et ES6

Explication détaillée des paramètres par défaut des fonctions de traitement dans les environnements ES5 et ES6

May 22, 2018 am 09:54 AM
函数 参数 默认

Cette fois, je vais vous apporter une explication détaillée des étapes pour les paramètres par défaut des fonctions de traitement dans les environnements ES5 et ES6. Quelles sont les précautions concernant les paramètres par défaut des fonctions de traitement dans les environnements ES5 et ES6. Ce qui suit est un cas pratique. Jetons un coup d'œil.

La valeur par défaut de la fonction est quelque chose qui améliore considérablement la robustesse (c'est-à-dire qu'elle rend le programme plus robuste)

Description MDN des paramètres par défaut de la fonction : les paramètres par défaut de la fonction ne permettent de transmettre aucune valeur ou un élément non défini Utilisez les paramètres par défaut lors de la saisie.

ES5

Utiliser logique ou || pour implémenter

Comme nous le savons tous, dans la version ES5, il n'existe pas de méthode directe pour gérer la valeur par défaut de la fonction
, nous ne pouvons donc améliorer la fonction de la fonction que nous-mêmes, ce qui se fait généralement comme ceci :

function doSomething (name, age) {
 name = name || 'default name'
 age = age || 18
 console.log(name, age)
}
Copier après la connexion

Nous le ferons. Les deux paramètres de la fonction, nom et âge, sont traités avec des valeurs par défaut. Sinon, utilise la valeur par défaut .

Après avoir exécuté la fonction, il ne semble y avoir rien de mal :

doSomething()    // default name, 18
doSomething('Niko') // Niko    , 18
doSomething(, 12)  // default name, 12
Copier après la connexion

Cependant, lorsque nous exécutons un tel code, nous obtiendrons des résultats inattendus :

doSomething('Niko', 0) // Niko, 18
Copier après la connexion

On peut constater que pour le paramètre 0, notre méthode d'implémentation de paramètre par défaut ci-dessus est problématique

Tout comme les quatre expressions ci-dessous, elles afficheront toutes des résultats erronés, ce qui est évident. ci-dessus la définition MDN des paramètres par défaut de la fonction :

console.log(0     || 'wrong')
console.log(''    || 'wrong')
console.log(null   || 'wrong')
console.log(false   || 'wrong')
Copier après la connexion

Posture correcte

Donc, la valeur par défaut correcte dans le traitement de la valeur ES5 devrait être comme ceci :

function doSomething (name, age) {
 if (name === undefined) {
  name = 'default name'
 }
 if (age === undefined) {
  age = 18
 }
 console.log(name, age)
}
Copier après la connexion

Utilisez l' opérateur ternaire pour simplifier l'opération

ou nous pouvons le raccourcir à la forme d'opérateur ternaire :

function doSomething (name, age) {
 name = name === undefined ? 'default name' : name
 age = age === undefined ? 18       : age
 console.log(name, age)
}
Copier après la connexion

Utiliser la fonction pour l'encapsulation

Mais si on écrit une fonction à chaque fois, on doit faire ces opérations à plusieurs reprises
C'est trop gênant, nous faisons donc une simple encapsulation de cette logique :

function defaultValue (val, defaultVal) {
 return val === undefined ? defaultVal : val
}
function doSomething (name, age) {
 name = defaultValue(name, 'default name')
 age = defaultValue(age , 18)
 console.log(name, age)
}
Copier après la connexion

De cette façon, la logique des paramètres par défaut de la fonction est implémentée de manière très concise dans ES5

une chose

Concernant la méthode d'implémentation de la fonction defaultValue ci-dessus, après avoir raisonnablement utilisé les avantages des langages faiblement typés
nous pouvons utiliser cette méthode pour sauvegarder le fonctionnement de l'opérateur ternaire :

function defaultValue () {
 return arguments[+(arguments[0] === undefined)]
}
Copier après la connexion

Nous savons que les arguments représentent tous les paramètres réels de la fonction

Nous utilisons des arguments[0] pour obtenir le premier paramètre réel, puis effectuons une comparaison congruente avec undefined

Mettez l'expression dans le couche externe Le résultat est converti en nombre, puis cette valeur est utilisée comme indice pour obtenir le paramètre correspondant dans les arguments.

Comme il est converti à partir d'une valeur booléenne, il n'y a que deux options : 0 et 1.

réalise également la fonction de l'opérateur ternaire ci-dessus.

ES6

La valeur par défaut de la fonction dans la version ES6 est essentiellement la routine que nous avons implémentée ci-dessus

Mais parce que Il est natif, il y aura donc une nouvelle syntaxe correspondante, qui pourra être utilisée de manière plus concise :

function doSomething (name = 'default name', age = 18) {
 console.log(name, age)
}
Copier après la connexion

ES6 fournit une nouvelle syntaxe qui nous permet d'écrire = [defaultValue] directement après les paramètres de déclaration de la fonction. Le formulaire est utilisé pour définir la valeur par défaut d’un certain paramètre.
L'utilisation de cette méthode élimine directement le besoin de vérifier la valeur par défaut à l'intérieur de la fonction, permettant à la fonction de se concentrer sur ce qu'elle doit faire.

Comment lever une exception pour certains paramètres obligatoires

Cette nouvelle syntaxe d'ES6 peut nous faire une très bonne erreur rappel pour un paramètre obligatoire :

function requireParams () {
 throw new Error('required params')
}
function doSomething (name = requireParams(), age = 18) {
 // do something
}
Copier après la connexion

Si le paramètre name n'est pas défini, la règle de valeur par défaut sera déclenchée

puis la fonction requireParams est appelée, et on lance directement dans la fonction Une erreur

Traitement des valeurs par défaut des paramètres de structure complexes

Le traitement ci-dessus concerne uniquement les données de type de base simples, mais si nous avons une fonction comme ce qui suit :

function init ({id, value}) {}
init({
 id: 'tagId',
 value: 1
})
Copier après la connexion

如果在ES5环境下,针对这种参数的默认值处理将会变得无比复杂

首先要判断这一个参数是否存在,然后在判断参数中的所有key是否存在

而在ES6中,可以这样来做:

function init ({
 id  = 'defaultId',
 value = 1
} = {}) {
 console.log(id, value)
}
init()
Copier après la connexion

首先在解构函数的后边添加默认值= {},然后针对每一项参数添加默认值,很简洁的就实现了我们的需求。

ES5版本的polyfill代码在仓库中的位置:defaultValue

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

jQuery实现无缝轮播与左右点击步骤详解

nodejs更改项目端口号步骤详解

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils pour créer dynamiquement de nouvelles fonctions dans les fonctions Golang Conseils pour créer dynamiquement de nouvelles fonctions dans les fonctions Golang Apr 25, 2024 pm 02:39 PM

Le langage Go propose deux technologies de création de fonctions dynamiques : la fermeture et la réflexion. les fermetures permettent d'accéder aux variables dans la portée de la fermeture, et la réflexion peut créer de nouvelles fonctions à l'aide de la fonction FuncOf. Ces technologies sont utiles pour personnaliser les routeurs HTTP, mettre en œuvre des systèmes hautement personnalisables et créer des composants enfichables.

Considérations relatives à l'ordre des paramètres dans la dénomination des fonctions C++ Considérations relatives à l'ordre des paramètres dans la dénomination des fonctions C++ Apr 24, 2024 pm 04:21 PM

Dans la dénomination des fonctions C++, il est crucial de prendre en compte l’ordre des paramètres pour améliorer la lisibilité, réduire les erreurs et faciliter la refactorisation. Les conventions courantes d'ordre des paramètres incluent : action-objet, objet-action, signification sémantique et conformité de la bibliothèque standard. L'ordre optimal dépend de l'objectif de la fonction, des types de paramètres, de la confusion potentielle et des conventions du langage.

Comment écrire des fonctions efficaces et maintenables en Java ? Comment écrire des fonctions efficaces et maintenables en Java ? Apr 24, 2024 am 11:33 AM

La clé pour écrire des fonctions Java efficaces et maintenables est la suivante : restez simple. Utilisez un nom significatif. Gérer des situations particulières. Utilisez une visibilité appropriée.

Collection complète de formules de fonctions Excel Collection complète de formules de fonctions Excel May 07, 2024 pm 12:04 PM

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Comparaison des avantages et des inconvénients des paramètres par défaut et des paramètres variables des fonctions C++ Comparaison des avantages et des inconvénients des paramètres par défaut et des paramètres variables des fonctions C++ Apr 21, 2024 am 10:21 AM

Les avantages des paramètres par défaut dans les fonctions C++ incluent la simplification des appels, l’amélioration de la lisibilité et l’évitement des erreurs. Les inconvénients sont une flexibilité limitée et des restrictions de dénomination. Les avantages des paramètres variadiques incluent une flexibilité illimitée et une liaison dynamique. Les inconvénients incluent une plus grande complexité, des conversions de types implicites et des difficultés de débogage.

Quels sont les avantages des fonctions C++ renvoyant des types référence ? Quels sont les avantages des fonctions C++ renvoyant des types référence ? Apr 20, 2024 pm 09:12 PM

Les avantages des fonctions renvoyant des types référence en C++ incluent : Améliorations des performances : le passage par référence évite la copie d'objets, économisant ainsi de la mémoire et du temps. Modification directe : L'appelant peut modifier directement l'objet de référence renvoyé sans le réaffecter. Simplicité du code : le passage par référence simplifie le code et ne nécessite aucune opération d'affectation supplémentaire.

Quelle est la différence entre les fonctions PHP personnalisées et les fonctions prédéfinies ? Quelle est la différence entre les fonctions PHP personnalisées et les fonctions prédéfinies ? Apr 22, 2024 pm 02:21 PM

La différence entre les fonctions PHP personnalisées et les fonctions prédéfinies est la suivante : Portée : les fonctions personnalisées sont limitées à la portée de leur définition, tandis que les fonctions prédéfinies sont accessibles tout au long du script. Comment définir : les fonctions personnalisées sont définies à l'aide du mot-clé function, tandis que les fonctions prédéfinies sont définies par le noyau PHP. Passage de paramètres : les fonctions personnalisées reçoivent des paramètres, tandis que les fonctions prédéfinies peuvent ne pas nécessiter de paramètres. Extensibilité : des fonctions personnalisées peuvent être créées selon les besoins, tandis que les fonctions prédéfinies sont intégrées et ne peuvent pas être modifiées.

Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Apr 21, 2024 am 09:39 AM

Les paramètres de référence dans les fonctions C++ (essentiellement les alias de variable, la modification de la référence modifie la variable d'origine) et les paramètres de pointeur (stockage de l'adresse mémoire de la variable d'origine, modification de la variable en déréférençant le pointeur) ont des utilisations différentes lors du passage et de la modification de variables. Les paramètres de référence sont souvent utilisés pour modifier les variables d'origine (en particulier les grandes structures) afin d'éviter une surcharge de copie lorsqu'elles sont transmises aux constructeurs ou aux opérateurs d'affectation. Les paramètres de pointeur sont utilisés pour pointer de manière flexible vers des emplacements de mémoire, implémenter des structures de données dynamiques ou transmettre des pointeurs nuls pour représenter des paramètres facultatifs.

See all articles