Şimdi bir argümanın bir JavaScript işlevine geçirilip iletilmediğini belirlemek için 2 yöntem gördüm. Bir yöntemin diğerinden daha iyi olup olmadığını ya da sadece kötü bir kullanım olup olmadığını merak ediyorum.
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Veya
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Anlayabildiğim kadarıyla, her ikisi de aynı şeyle sonuçlanır, ancak daha önce sadece ilkini üretimde kullandım.
Tom'un belirttiği başka bir seçenek :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Juan'ın yorumuna göre, Tom'un önerisini şu şekilde değiştirmek daha iyi olurdu:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
eğer 'blah' verilecektir argument2
olduğunu false
, bu tanımlanmamış değil sadece if (!). Eğer argument2
bir boolean ve işlev geçirilir false
bunun için, bu çizgi rağmen 'blah' dönecektir argument2
düzgün tanımlanmış olan .
argument2
olduğunu 0
, ''
ya da null
.