Pourriez-vous, s'il vous plaît, me montrer la belle façon de sauter les paramètres facultatifs en JavaScript.
Par exemple, je veux jeter tout opt_
paramètres ici:
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
Solution:
goog.net.XhrIo.send(url, undefined, undefined, undefined, {'Cache-Control': 'no-cache'})
Vous devez utiliser undefined
au lieu du paramètre facultatif que vous souhaitez ignorer, car cette valeur simule à 100% la valeur par défaut des paramètres facultatifs en JavaScript.
Petit exemple:
myfunc(param);
//is equivalent to
myfunc(param, undefined, undefined, undefined);
Forte recommandation : utilisez JSON si vous avez beaucoup de paramètres, et vous pouvez avoir des paramètres optionnels au milieu de la liste des paramètres. Regardez comment cela se fait dans jQuery .
Le pari le plus sûr est undefined
, et devrait fonctionner de manière presque omniprésente. En fin de compte, cependant, vous ne pouvez pas tromper la fonction appelée en pensant que vous avez vraiment omis un paramètre.
Si vous vous penchez vers l'utilisation de null
simplement parce qu'il est plus court, pensez à déclarer une variable nommée _
Comme un raccourci agréable pour undefined
:
(function() { // First line of every script file
"use strict";
var _ = undefined; // For shorthand
// ...
aFunction(a, _, c);
// ...
})(); // Last line of every script
Tout d'abord, sachez que:
typeof undefined
Est évalué à "undefined"
typeof null
Est évalué à "object"
Supposons donc qu'une fonction accepte un argument qu'elle s'attend à être de type "number"
. Si vous fournissez null
comme valeur, vous lui donnez un "object"
. La sémantique est désactivée.1
Alors que les développeurs continuent d'écrire du code javascript de plus en plus robuste, il y a de plus en plus de chances que les fonctions que vous appelez vérifient explicitement la valeur d'un paramètre pour undefined
par opposition à la classique if (aParam) {...}
. Vous serez sur un terrain instable si vous continuez à utiliser null
de manière interchangeable avec undefined
simplement parce qu'ils se trouvent tous deux contraindre à false
.
Soyez conscient, cependant, qu'il est en fait possible pour une fonction de dire si un paramètre a été réellement omis (par opposition à être défini sur undefined
):
f(undefined); // Second param omitted
function f(a, b) {
// Both a and b will evaluate to undefined when used in an expression
console.log(a); // undefined
console.log(b); // undefined
// But...
console.log("0" in arguments); // true
console.log("1" in arguments); // false
}
notes de bas de page
undefined
ne soit pas non plus de type "number"
, Son travail consiste à être un type qui n'est pas vraiment un type. C'est pourquoi c'est la valeur assumée par les variables non initialisées et la valeur de retour par défaut pour les fonctions.Passez simplement null
comme valeur de paramètre.
Ajouté: vous pouvez également ignorer tous les paramètres facultatifs consécutifs après le dernier que vous souhaitez transmettre la valeur réelle (dans ce cas, vous pouvez ignorer opt_timeoutInterval
paramètre du tout)