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 argument2for false(!), Não simplesmente se for indefinido. Se argument2for um booleano e a função for passada falsepara ele, essa linha retornará 'blá', apesar de argument2ser definida corretamente .
argument2é 0, ''ou null.