Saya sekarang telah melihat 2 metode untuk menentukan apakah suatu argumen telah diteruskan ke fungsi JavaScript. Saya bertanya-tanya apakah satu metode lebih baik dari yang lain atau apakah satu hanya buruk untuk digunakan?
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Atau
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Sejauh yang saya tahu, keduanya menghasilkan hal yang sama, tetapi saya hanya menggunakan yang pertama sebelum produksi.
Opsi lain seperti yang disebutkan oleh Tom :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Sesuai komentar Juan, akan lebih baik untuk mengubah saran Tom menjadi:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
akan menghasilkan 'bla' jika argument2
ini false
, tidak hanya jika tidak terdefinisi (!). Jika argument2
boolean, dan fungsi dilewatkan false
untuk itu, baris itu akan mengembalikan 'bla' meskipun argument2
telah didefinisikan dengan benar .
argument2
adalah 0
, ''
, atau null
.