Beberapa bahasa - seperti Ruby, CoffeeScript dan versi JavaScript yang akan datang - dapat mendeklarasikan parameter default saat mendefinisikan fungsi, seperti ini:
Salinan kode adalah sebagai berikut:
fungsi myfunc (param1, param2 = "string kedua") {
console.log (param1, param2);
}
// output: "string pertama" dan "string kedua"
myfunc ("string pertama");
// outputs: "string pertama" dan "string kedua versi 2"
myfunc ("string pertama", "string kedua versi 2");
Sayangnya, dalam versi JavaScript saat ini, tulisan ini tidak valid. Jadi apa yang bisa kita lakukan untuk mengimplementasikan cara ini, menggunakan toolset kita yang ada?
Solusi termudah adalah seperti ini:
Salinan kode adalah sebagai berikut:
fungsi myfunc (param1, param2) {
if (param2 === tidak terdefinisi) {
param2 = "string kedua";
}
console.log (param1, param2);
}
// outputs: "string pertama" dan "string kedua versi 2"
myfunc ("string pertama", "string kedua versi 2");
Faktanya adalah bahwa parameter yang dihilangkan selalu "tidak terdefinisi" ketika diakses. Jika Anda hanya memiliki satu parameter, ini adalah solusi yang baik, bagaimana jika ada banyak yang saat itu?
Jika Anda memiliki lebih dari satu parameter, Anda dapat menggunakan objek sebagai parameter, yang memiliki keuntungan bahwa setiap parameter memiliki penamaan yang jelas. Jika Anda melewati parameter objek, Anda dapat mendeklarasikan nilai default dengan cara yang sama.
Salinan kode adalah sebagai berikut:
fungsi myfunc (paramoBject) {
var defaultParams = {
Param1: "String Pertama",
param2: "string kedua",
Param3: "String Ketiga"
};
var finalParams = defaultParams;
// Kami mengulangi setiap properti dari paramObject
untuk (tombol var di paramObject) {
// Jika properti saat ini tidak diwarisi, dilanjutkan
if (paramoBject.hasownproperty (key)) {
// Jika properti saat ini didefinisikan,
// tambahkan ke finalparams
if (paramoBject [key]! == tidak terdefinisi) {
finalParams [key] = paramObject [key];
}
}
}
Console.log (finalparams.param1,
finalparams.param2,
finalparams.param3);
}
myfunc ({param1: "string saya sendiri"});
Ini agak canggung. Jika Anda sering menggunakan metode ini, Anda dapat menulis fungsi enkapsulasi. Untungnya, banyak perpustakaan sekarang memiliki metode terkait, seperti metode perpanjangan di jQuery dan garis bawah.
Berikut ini menggunakan metode perpanjangan garis bawah untuk mencapai hasil yang sama di atas:
Salinan kode adalah sebagai berikut:
fungsi myfunc (paramoBject) {
var defaultParams = {
Param1: "String Pertama",
param2: "string kedua",
Param3: "String Ketiga"
};
var finalParams = _.extend (defaultParams, paramObject);
Console.log (finalparams.param1,
finalparams.param2,
finalparams.param3);
}
// output:
// "string saya sendiri" dan "string kedua" dan "string ketiga"
myfunc ({param1: "string saya sendiri"});
Beginilah cara Anda bisa mendapatkan parameter default dalam versi JavaScript saat ini.
Kritik dan koreksi aspek yang tidak pantas dalam artikel ini dipersilakan.