Ora ho visto 2 metodi per determinare se un argomento è stato passato a una funzione JavaScript. Mi chiedo se un metodo sia migliore dell'altro o se uno sia solo male da usare?
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');
Per quanto ne so, entrambi risultano nella stessa cosa, ma ho usato solo il primo prima in produzione.
Un'altra opzione, come menzionato da Tom :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Secondo il commento di Juan, sarebbe meglio cambiare il suggerimento di Tom in:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
risulterà in "blah" se argument2
è false
(!), Non semplicemente se non è definito. Se argument2
è un valore booleano e la funzione viene passata false
per essa, quella riga restituirà "blah" nonostante argument2
sia stata definita correttamente .
argument2
è 0
, ''
o null
.