Eu já vi dois métodos para determinar se um argumento foi passado para uma função JavaScript. Gostaria de saber se um método é melhor que o outro ou se é apenas ruim de usar?
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Ou
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Tanto quanto posso dizer, ambos resultam na mesma coisa, mas eu só usei o primeiro antes na produção.
Outra opção, como mencionado por Tom :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Conforme o comentário de Juan, seria melhor mudar a sugestão de Tom para:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
resultará em 'blá' se argument2
for false
(!), Não simplesmente se for indefinido. Se argument2
for um booleano e a função for passada false
para ele, essa linha retornará 'blá', apesar de argument2
ser definida corretamente .
argument2
é 0
, ''
ou null
.