Establecer un valor de parámetro por defecto para una función de JavaScript
Me gustaría que una función de JavaScript tuviera argumentos opcionales en los que establezco un valor por defecto, que se utilizan si el valor no está definido (y se ignoran si se pasa el valor). En Ruby se puede hacer así:
def read_file(file, delete_after = false)
# code
end
¿Funciona esto en JavaScript?
function read_file(file, delete_after = false) {
// Code
}
2271
3
Desde ES6/ES2015, los parámetros por defecto están en la especificación del lenguaje.
simplemente funciona.
Referencia: Parámetros por defecto - MDN
Los parámetros por defecto de las funciones permiten que los parámetros formales sean inicializados con valores por defecto si no hay valor o indefinido es pasado.
También puede simular parámetros por defecto nombrados mediante desestructuración:
Pre ES2015,
Hay muchas formas, pero este es mi método preferido: te permite pasar lo que quieras, incluyendo false o null. (
typeof null == "object"
)Esto asigna a
delete_after
el valor dedelete_after
si no es un valor falso, de lo contrario asigna la cadena"mi defecto aquí"
. Para más detalles, consulte Doug Crockford's survey of the language and check out the section on Operators.Este enfoque no funciona si quiere pasar un valor falsey, es decir,
false
,null
,undefined
,0
o `"". Si necesita pasar valores falseados tendrá que utilizar el método de Tom Ritter's answer.Cuando se trata de un número de parámetros a una función, a menudo es útil permitir al consumidor pasar los argumentos del parámetro en un objeto y luego fusionar estos valores con un objeto que contenga los valores por defecto para la función
a utilizar
Personalmente, encuentro que algo sencillo como esto es mucho más conciso y legible.