Valores de argumentos predeterminados en funciones de JavaScript [duplicado]
Posible duplicado:
¿Cómo puedo crear un valor predeterminado para un parámetro para una función de JavaScript?
en PHP:
function func($a = 10, $b = 20){
// if func() is called with no arguments $a will be 10 and $ b will be 20
}
¿Cómo puedes hacer esto en JavaScript?
Recibo un error si intento asignar valores en los argumentos de la función
falta) después de los parámetros formales
En javascript puedes llamar a una función (incluso si tiene parámetros) sin parámetros.
Entonces puedes agregar valores predeterminados como este:
function func(a, b){
if (typeof(a)==='undefined') a = 10;
if (typeof(b)==='undefined') b = 20;
//your code
}
y luego puedes llamarlo func();
para usar los parámetros predeterminados.
Aquí tienes una prueba:
function func(a, b){
if (typeof(a)==='undefined') a = 10;
if (typeof(b)==='undefined') b = 20;
alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);
ES2015 en adelante:
Desde ES6/ES2015, tenemos parámetros predeterminados en la especificación del idioma. Entonces podemos hacer algo simple como,
function A(a, b = 4, c = 5) {
}
o combinado con la desestructuración ES2015 ,
function B({c} = {c: 2}, [d, e] = [3, 4]) {
}
Para una explicación detallada,
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters
Los parámetros de función predeterminados permiten inicializar parámetros formales con valores predeterminados si no se pasa ningún valor o no está definido.
Antes de ES2015:
Si va a manejar valores que NO son números, cadenas, booleanos NaN
, o null
simplemente puede usar
(Entonces, para objetos, matrices y funciones que nunca planeas enviar null
, puedes usar)
param || DEFAULT_VALUE
Por ejemplo,
function X(a) {
a = a || function() {};
}
Aunque esto parece simple y funciona un poco, es restrictivo y puede ser un antipatrón porque también ||
opera con todos los valores falsos ( ""
, null
, NaN
, false
, 0
), lo que hace que este método sea imposible para asignar a un parámetro el valor falso pasado como argumento.
Entonces, para manejar solo undefined
valores explícitamente, el enfoque preferido sería:
function C(a, b) {
a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
Tienes que comprobar si el argumento no está definido:
function func(a, b) {
if (a === undefined) a = "default value";
if (b === undefined) b = "default value";
}
También tenga en cuenta que esta pregunta ya ha sido respondida antes .
Nunca lo había visto hecho de esa manera en JavaScript. Si desea una función con parámetros opcionales a los que se les asignen valores predeterminados si se omiten los parámetros, aquí le mostramos una manera de hacerlo:
function(a, b) {
if (typeof a == "undefined") {
a = 10;
}
if (typeof b == "undefined") {
a = 20;
}
alert("a: " + a + " b: " + b);
}