Penjelasan bahwa tidak ada jawaban perlengkapan lainnya adalah bahwa argumen asli yang masih tersedia, tetapi tidak dalam posisi asli di argumentsobjek.
The argumentsobjek berisi satu elemen untuk setiap parameter yang sebenarnya disediakan untuk fungsi. Ketika Anda menelepon aAnda menyediakan tiga argumen: nomor 1, 2dan, 3. Jadi, argumentsberisi [1, 2, 3].
function a(args){
console.log(arguments) // [1, 2, 3]
b(arguments);
}
Ketika Anda memanggil b, namun, Anda lulus tepat satu argumen: a's argumentsobjek. Jadi argumentsmengandung [[1, 2, 3]](yaitu satu elemen, yaitu a's argumentsobjek, yang memiliki sifat yang berisi argumen asli untuk a).
function b(args){
// arguments are lost?
console.log(arguments) // [[1, 2, 3]]
}
a(1,2,3);
Seperti yang ditunjukkan @Nick, Anda dapat menggunakan applyuntuk menyediakan argumentsobjek yang ditetapkan dalam panggilan.
Berikut ini mencapai hasil yang sama:
function a(args){
b(arguments[0], arguments[1], arguments[2]); // three arguments
}
Tetapi applyapakah solusi yang benar dalam kasus umum.
argumentsbukan array (melainkan objek yang mengimplementasikan semantik mirip array ) dan oleh karena itu tidak sepenuhnya jelas pada pandangan pertama apakah dapat digunakan dengan cara yang sama seperti array aktual.