Double Possible:
Est-il une meilleure façon de faire en option paramètres de la fonction en Javascript?Je voudrais une fonction JavaScript pour avoir des arguments optionnels qui-je définir une valeur par défaut, qui est utilisé si la valeur n'est pas définie. En ruby, vous pouvez le faire comme ceci:
def read_file(file, delete_after = false) # code end
Cela fonctionne en JavaScript?
function read_file(file, delete_after = false) { // Code }
Réponses
Trop de publicités?function read_file(file, delete_after) {
delete_after = delete_after || "my default here";
//rest of code
}
Il attribue à l' delete_after
la valeur de delete_after
si ce n'est pas un falsey valeur sinon il affecte la chaîne "my default here"
. Pour plus de détails, consultez Doug Crockford de l'enquête de la langue et consultez la section sur les Opérateurs.
Cette approche ne fonctionne pas si vous voulez passer une falsey valeur c'est à dire false
, null
, undefined
, 0
ou ""
. Si vous avez besoin d' falsey valeurs à transmettre dans vous devez utiliser la méthode dans Tom Ritter réponse.
Lorsque vous traitez avec un certain nombre de paramètres à une fonction, il est souvent utile de permettre au consommateur de passer le paramètre arguments dans un objet et de fusionner ces valeurs avec un objet qui contient les valeurs par défaut pour la fonction
function read_file(values) {
values = merge({
delete_after : "my default here"
}, values || {});
// rest of code
}
// simple implementation based on $.extend() from jQuery
function merge() {
var obj, name, copy,
target = arguments[0] || {},
i = 1,
length = arguments.length;
for (; i < length; i++) {
if ((obj = arguments[i]) != null) {
for (name in obj) {
copy = obj[name];
if (target === copy) {
continue;
}
else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
return target;
};
pour utiliser
// will use the default delete_after value
read_file({ file: "my file" });
// will override default delete_after value
read_file({ file: "my file", delete_after: "my value" });