Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang parameter lalai dalam pengetahuan Javascript_Basic

Penjelasan terperinci tentang parameter lalai dalam pengetahuan Javascript_Basic

WBOY
Lepaskan: 2016-05-16 16:33:15
asal
1127 orang telah melayarinya

Sesetengah bahasa - seperti Ruby, CoffeeScript dan versi JavaScript akan datang - boleh mengisytiharkan parameter lalai apabila mentakrifkan fungsi, seperti ini:

Salin kod Kod adalah seperti berikut:

fungsi myFunc(param1, param2 = "rentetan kedua") {
console.log(param1, param2);
}

// 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:

Salin kod Kod adalah seperti berikut:

fungsi myFunc(param1, param2) {
Jika (param2 === tidak ditentukan) {
         param2 = "rentetan kedua";
}

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.

Salin kod Kod adalah seperti berikut:

fungsi myFunc(paramObject) {
var defaultParams = {
         param1: "rentetan pertama",
         param2: "rentetan kedua",
         param3: "rentetan ketiga"
};

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:

Salin kod Kod adalah seperti berikut:

fungsi myFunc(paramObject) {
var defaultParams = {
         param1: "rentetan pertama",
         param2: "rentetan kedua",
         param3: "rentetan ketiga"
};

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.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan