Sesetengah bahasa - seperti Ruby, CoffeeScript dan versi JavaScript akan datang - boleh mengisytiharkan parameter lalai apabila mentakrifkan fungsi, seperti ini:
// Output: "rentetan pertama" dan "rentetan kedua"
myFunc("rentetan pertama");
// Output: "rentetan pertama" dan "rentetan kedua versi 2"
myFunc("rentetan pertama", "rentetan kedua versi 2");
Malangnya, dalam versi javascript semasa, cara penulisan ini tidak sah. Jadi, apakah yang boleh kita lakukan untuk mencapai ini, menggunakan set alat sedia ada?
Penyelesaian paling mudah adalah seperti ini:
console.log(param1, param2);
}
// Output: "rentetan pertama" dan "rentetan kedua versi 2"
myFunc("rentetan pertama", "rentetan kedua versi 2");
Hakikatnya ialah parameter yang ditinggalkan sentiasa "tidak ditentukan" apabila diakses. Ini adalah penyelesaian yang baik jika anda hanya mempunyai satu parameter, tetapi bagaimana jika anda mempunyai lebih daripada satu?
Jika anda mempunyai lebih daripada satu parameter, anda boleh menggunakan objek sebagai parameter, yang mempunyai kelebihan bahawa setiap parameter mempunyai nama yang jelas. Jika anda lulus parameter objek, anda boleh mengisytiharkan nilai lalai dengan cara yang sama.
var finalParams = defaultParams;
// Kami mengulangi setiap sifat paramObject
untuk (kunci var dalam paramObject) {
// Jika harta semasa tidak diwarisi, teruskan
Jika (paramObject.hasOwnProperty(key)) {
// Jika sifat semasa ditakrifkan,
// tambahkannya pada finalParams
Jika (paramObject[key] !== undefined) {
finalParams[key] = paramObject[key];
}
}
}
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
}
myFunc({param1: "Rentetan saya sendiri"});
Ini agak kekok Jika anda menggunakan kaedah ini di banyak tempat, anda boleh menulis fungsi pembungkus Nasib baik, banyak perpustakaan kini mempunyai kaedah yang berkaitan, seperti kaedah lanjutan dalam jQuery dan Underscore.
Yang berikut menggunakan kaedah lanjutan Underscore untuk mencapai hasil yang sama seperti di atas:
var finalParams = _.extend(defaultParams, paramObject);
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
}
// Output:
// "Rentetan saya sendiri" dan "rentetan kedua" dan "rentetan ketiga"
myFunc({param1: "Rentetan saya sendiri"});
Ini adalah cara anda boleh mendapatkan parameter lalai, dalam versi javascript semasa.
Kami mengalu-alukan kritikan dan pembetulan sebarang ketidaktepatan dalam artikel.