¿Existe una mejor manera de crear parámetros de funciones opcionales en JavaScript? [duplicar]
Siempre he manejado parámetros opcionales en JavaScript de esta manera:
function myFunc(requiredArg, optionalArg){
optionalArg = optionalArg || 'defaultValue';
// Do stuff
}
Hay una mejor manera de hacerlo?
¿Hay algún caso en el que el uso ||
así vaya a fallar?
Su lógica falla si se pasa optionArg, pero se evalúa como falso; pruebe esto como alternativa
if (typeof optionalArg === 'undefined') { optionalArg = 'default'; }
O un modismo alternativo:
optionalArg = (typeof optionalArg === 'undefined') ? 'default' : optionalArg;
¡Utilice el idioma que mejor le comunique la intención!
En ECMAScript 2015 (también conocido como " ES6 ") puede declarar valores de argumento predeterminados en la declaración de función:
function myFunc(requiredArg, optionalArg = 'defaultValue') {
// do stuff
}
Más sobre ellos en este artículo sobre MDN .
Actualmente, esto solo es compatible con Firefox , pero a medida que se complete el estándar, se espera que el soporte mejore rápidamente.
EDITAR (2019-06-12):
Los parámetros predeterminados ahora son ampliamente compatibles con los navegadores modernos. No
todas las versiones de Internet Explorer admiten esta función. Sin embargo, Chrome , Firefox y Edge actualmente lo admiten.
Considero que esta es la forma más sencilla y legible:
if (typeof myVariable === 'undefined') { myVariable = 'default'; }
//use myVariable here
La respuesta de Paul Dixon (en mi humilde opinión) es menos legible que esta, pero todo se reduce a la preferencia.
La respuesta de insin es mucho más avanzada, ¡pero mucho más útil para funciones grandes!
EDITAR 17/11/2013 9:33 pm: Creé un paquete para Node.js que facilita la "sobrecarga" de funciones (métodos) llamadas paramétricas .