Ahora he visto 2 métodos para determinar si se ha pasado un argumento a una función de JavaScript. Me pregunto si un método es mejor que el otro o si uno es malo de usar.
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
O
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Por lo que puedo decir, ambos resultan en lo mismo, pero solo he usado el primero antes en producción.
Otra opción mencionada por Tom :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Según el comentario de Juan, sería mejor cambiar la sugerencia de Tom para:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
dará como resultado 'blah' si argument2
es false
(!), No simplemente si no está definido. Si argument2
es un booleano y se le pasa la función false
, esa línea devolverá 'blah' a pesar de argument2
estar definida correctamente .
argument2
es 0
, ''
o null
.