Widziałem teraz 2 metody określania, czy argument został przekazany do funkcji JavaScript. Zastanawiam się, czy jedna metoda jest lepsza od drugiej, czy też jest po prostu nieodpowiednia w użyciu?
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Lub
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
O ile mogę stwierdzić, oba skutkują tym samym, ale pierwszego użyłem tylko w produkcji.
Kolejna opcja, o której wspomniał Tom :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Zgodnie z komentarzem Juana lepiej byłoby zmienić sugestię Toma na:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
spowoduje „bla”, jeśli argument2
jest false
(!), A nie tylko, jeśli jest niezdefiniowane. Jeśli argument2
jest wartością logiczną, a funkcja jest false
dla niej przekazywana , linia ta zwróci „bla”, mimo że argument2
jest poprawnie zdefiniowana .
argument2
jest 0
, ''
albo null
.