Salinan kode adalah sebagai berikut:
<bahasa skrip = "javascript">
// Nilai parameter pertama.
tes fungsi (a, b, c, d) {
peringatan (argumen [0]);
}
// Argumen [0] sebenarnya a. Demikian pula, argumen [1] adalah b, c, d pada gilirannya
</script>
Salinan kode adalah sebagai berikut:
<bahasa skrip = "javascript">
{
function function_name (exp1, exp2, exp3, exp4)
{
var umber = "";
Umber = argumen.length;
waspada (Umber);
}
function_name ('a', 'b', 'c', 'd'); semua bisa dipanggil
// function_name ("a", "b", "c", "d"); bisa dipanggil
}
</script>
1. Dalam JavaScript, objek argumen adalah objek yang relatif khusus, yang sebenarnya merupakan properti bawaan dari fungsi saat ini. Argumen sangat mirip dengan array, tetapi sebenarnya bukan contoh array. Ini dapat diverifikasi dengan kode berikut (tentu saja, pada kenyataannya, dalam fungsi funcarg, tidak perlu menulis argumen sebagai funcarg.arguments, cukup tulis argumen).
Salinan kode adalah sebagai berikut:
Array.prototype.testarg = "test";
fungsi funcarg () {
waspada (funcarg.arguments.tesarg);
waspada (funcarg.arguments [0]);
}
waspada (array baru (). tesarg); // Hasil: "Tes"
funcar (10); // Hasil: "tidak terdefinisi" "10"
2. Panjang objek argumen ditentukan oleh jumlah parameter nyata daripada jumlah parameter formal. Parameter formal adalah variabel yang membuka kembali penyimpanan ruang memori dalam fungsi, tetapi mereka tidak tumpang tindih dengan ruang memori objek argumen. Ketika baik argumen dan nilai ada, nilainya disinkronkan, tetapi untuk salah satunya, nilai -nilai tidak disinkronkan untuk situasi yang tidak berharga ini. Kode berikut dapat diverifikasi.
Salinan kode adalah sebagai berikut:
fungsi f (a, b, c) {
peringatan (argumen.length); // Hasil: "2"
a = 100;
peringatan (argumen [0]); // Hasil: "100"
argumen [0] = "qqyumidi";
waspada (a); // Hasil: "qqyumidi"
peringatan (c); // Hasil: "tidak ditentukan"
C = 2012;
waspada (argumen [2]); // Hasil: "tidak ditentukan"
}
f (1, 2);
3. Dari Deklarasi dan Karakteristik Panggilan Fungsi dalam JavaScript, dapat dilihat bahwa fungsi dalam JavaScript tidak dapat kelebihan beban.
Berdasarkan dasar kelebihan beban dalam bahasa lain: "Nilai pengembalian fungsi berbeda atau jumlah parameter formal berbeda", kita dapat menarik kesimpulan di atas:
Pertama: tidak ada pernyataan bahwa deklarasi fungsi JavaScript mengembalikan tipe nilai;
Kedua: Jumlah parameter formal dalam JavaScript hanya untuk memfasilitasi operasi variabel dalam fungsi. Bahkan, parameter aktual telah disimpan dalam objek argumen.
Selain itu, pemahaman yang mendalam tentang mengapa fungsi tidak dapat kelebihan beban dalam JavaScript dari fungsi JavaScript itu sendiri: dalam JavaScript, fungsi sebenarnya adalah objek, dan nama fungsi adalah referensi ke fungsi, atau nama fungsi itu sendiri adalah variabel. Untuk deklarasi fungsi dan ekspresi fungsi yang ditunjukkan di bawah ini, di atas sebenarnya sama (tanpa mempertimbangkan perbedaan antara deklarasi fungsi dan ekspresi fungsi), sangat membantu bagi kita untuk memahami karakteristik bahwa fungsi tidak dapat kelebihan beban dalam JavaScript.
Salinan kode adalah sebagai berikut:
fungsi f (a) {
mengembalikan A + 10;
}
fungsi f (a) {
mengembalikan A - 10;
}
// Tanpa mempertimbangkan perbedaan antara deklarasi fungsi dan ekspresi fungsi, itu setara dengan yang berikut
var f = function (a) {
mengembalikan A + 10;
}
var f = function (a) {
mengembalikan A - 10;
}
4. Ada properti yang sangat berguna dalam objek argumen: Callee. Argumen.Callee Mengembalikan referensi fungsi saat ini di mana objek argumen ini berada. Saat menggunakan panggilan rekursif untuk berfungsi, gunakan argumen.callee alih -alih nama fungsi itu sendiri.
sebagai berikut:
Salinan kode adalah sebagai berikut:
jumlah fungsi (a) {
if (a == 1) {
kembali 1;
}
mengembalikan A + argumen.callee (-a);
}
var mm = hitung (10);
peringatan (mm);