Karena kesalahan desain bahasa, argumen dapat diperlakukan sebagai array.
Salinan kode adalah sebagai berikut:
fungsi nol () {
console.log (argumen [0]);
}
Akan ada
Salinan kode adalah sebagai berikut:
fungsi nol () {
untuk (var i = 0; i <arguments.length; i ++) {
console.log (argumen [i]);
}
}
Itu memanfaatkan fakta bahwa JavaScript adalah bahwa Javasc
Variabel argumen di sini menyediakan antarmuka seperti array untuk argumen yang sebenarnya. Karena parameter variabel argumen di sini, kita dapat menggunakan hal yang menarik ini untuk melakukan beberapa hal menarik, seperti kelebihan beban.
Reload Javscript
Ada pertanyaan tentang kelebihan beban di StackVoerFlow, jadi jawaban pertama adalah
Salinan kode adalah sebagai berikut:
if (typeof friend === "tidak terdefinisi") {
} kalau tidak {
}
Jawaban lainnya adalah
Salinan kode adalah sebagai berikut:
switch (arguments.length) {
Kasus 0:
// mungkin kesalahan
merusak;
Kasus 1:
// Lakukan sesuatu
merusak;
Kasus 2:
Default: // jatuh untuk menangani kasus lebih banyak parameter
// Lakukan sesuatu yang lain
merusak;
}
Tapi metode ini benar-benar tidak tampan. Akankah fungsi kita pada akhirnya menjadi seperti ini?
Salinan kode adalah sebagai berikut:
fungsi nol1 () {
Console.log ('Argumen 1')
};
Fungsi Zero2 () {
Console.log ('Argumen 2')
};
fungsi nol () {
if (arguments.length == 1) {
Zero1 ();
} kalau tidak{
Zero2 ();
}
}
Ini benar-benar tidak tampan sama sekali. Bahkan jika kita mengubah sakelar ... kasing, itu tidak akan terlihat bagus.
Argumen JavaScript bukan array
Argumen tidak selalu merupakan array seperti yang kita lihat, dan kadang -kadang mungkin tidak.
Salinan kode adalah sebagai berikut:
fungsi hello () {
Console.log (tipe argumen);
}
Di sini jenis argumen adalah objek, meskipun jenis array juga merupakan objek, meskipun kita dapat mengubahnya menjadi array
Salinan kode adalah sebagai berikut:
var args = array.prototype.slice.call (argumen);
Tetapi ini juga menunjukkan bahwa ini bukan array, ia hanya memiliki satu -satunya sifat array, yaitu panjang. Selain ini
argumen.callee
Referensi ke fungsi yang sedang dieksekusi.
argumen.caller
Referensi ke fungsi yang memohon fungsi yang saat ini dieksekusi.
argumen.length
Referensi ke jumlah argumen yang diteruskan ke fungsi.