what - parámetros por defecto en node.js
js callback with parameters (4)
¿Cómo se hace para configurar los parámetros predeterminados en node.js?
Por ejemplo, digamos que tengo una función que normalmente se vería así:
function(anInt, aString, cb, aBool=true){
if(bool){...;}else{...;}
cb();
}
Para llamarlo se vería algo así:
function(1, ''no'', function(){
...
}, false);
o:
function(2, ''yes'', function(){
...
});
Sin embargo, no parece que node.js admita los parámetros predeterminados de esta manera. ¿Cuál es la mejor manera de lograr arriba?
La solución más simple es decir dentro de la función.
var variable1 = typeof variable1 !== ''undefined'' ? variable1 : default_value;
De esta manera, si el usuario no proporcionó la variable 1, la reemplaza con el valor predeterminado.
En tu caso:
function(anInt, aString, cb, aBool) {
aBool = typeof aBool !== ''undefined'' ? aBool : true;
if(bool){...;}else{...;}
cb();
}
Puede usar bind
para crear una nueva función que ya tiene un conjunto de argumentos pasados:
fn1 = fn.bind(fn, 1, ''no'', function(){}, false);
fn1();
fn2 = fn.bind(fn, 2, ''yes'', function(){});
fn2(true);
Alternativamente, las langues como CoffeeScript que se compilan en JavaScript proporcionan mecanismos que admiten parámetros predeterminados sin tener que usar bind
:
CoffeeScript:
fn = (bar=''foo'') ->
JavaScript:
fn = function(bar) {
if (bar == null) {
bar = ''foo'';
}
};
Ver el tema github . Puede habilitar los parámetros predeterminados en las versiones actuales del nodo (por ejemplo, 5.8.0) usando --harmony_default_parameters
node --harmony_default_parameters --eval "const t = function(i = 42) { return i }; console.log(t());"
[...]
Estará habilitado por defecto en v6.0
Respuesta de 2017: el nodo 6 y superior incluyen los parámetros predeterminados de ES6
var sayMessage = function(message=''This is a default message.'') {
console.log(message);
}