JavaScript terkenal dengan fleksibilitinya, membolehkan fungsi mengendalikan pelbagai bilangan hujah dengan lancar. Salah satu permata tersembunyi di sebalik keupayaan ini ialah objek argumen, yang telah menjadi asas dalam mengendalikan parameter fungsi, terutamanya sebelum ciri moden seperti parameter rehat (...args) diperkenalkan. Walaupun ia mungkin tidak begitu biasa dalam pangkalan kod ES6, memahami hujah adalah penting untuk bekerja dengan kod warisan dan mendapatkan pemahaman yang lebih mendalam tentang cara fungsi JavaScript beroperasi.
Objek argumen ialah objek seperti tatasusunan yang boleh diakses dalam semua fungsi bukan anak panah. Ia memegang semua nilai yang dihantar kepada fungsi, tidak kira sama ada fungsi itu mentakrifkan parameter secara eksplisit. Objek ini berguna apabila anda ingin mengakses argumen fungsi secara dinamik atau jika bilangan argumen yang diluluskan berbeza-beza.
Contoh:
function showArguments() { console.log(arguments); } showArguments(1, 2, 3, "Hello"); // Output: {0: 1, 1: 2, 2: 3, 3: "Hello", length: 4}
Dalam contoh ini, objek argumen mengandungi semua nilai yang dihantar ke showArguments, walaupun fungsi itu tidak mentakrifkan sebarang parameter formal. Objek argumen ialah diindeks sifar, bermakna anda boleh mengakses nilainya seperti tatasusunan (argumen[0], argumen[1], dsb.).
function testArguments() { console.log(arguments.length); // Number of arguments passed console.log(arguments[0]); // First argument } testArguments(10, 20, 30); // Output: 3, 10
Untuk menggunakan kaedah tatasusunan pada argumen, anda boleh menukarnya kepada tatasusunan sebenar menggunakan Array.from() atau operator spread (...):
function testArguments() { const argsArray = Array.from(arguments); console.log(argsArray.map(arg => arg * 2)); // Multiply each argument by 2 } testArguments(1, 2, 3); // Output: [2, 4, 6]
const arrowFunction = () => { console.log(arguments); // ReferenceError: arguments is not defined }; arrowFunction(1, 2);
Pertimbangkan contoh klasik fungsi ini yang menambahkan sebarang bilangan argumen yang dihantar kepadanya:
function sum() { let total = 0; for (let i = 0; i < arguments.length; i++) { total += arguments[i]; } return total; } console.log(sum(1, 2, 3)); // Output: 6
Dalam fungsi sum(), kami menggelungkan semua argumen menggunakan arguments.length dan menjumlahkannya. Sebelum ES6, ini ialah cara utama untuk mengendalikan fungsi variadic (fungsi dengan bilangan argumen yang tidak ditentukan).
Dengan pengenalan ES6, parameter rehat (...args) menawarkan cara yang lebih bersih dan intuitif untuk mengendalikan berbilang argumen, selalunya menggantikan objek argumen. Parameter selebihnya menyediakan tatasusunan sebenar argumen, menjadikannya lebih mudah untuk digunakan, kerana ia disertakan dengan semua kaedah tatasusunan.
Contoh:
function sum(...args) { return args.reduce((total, num) => total + num, 0); } console.log(sum(1, 2, 3)); // Output: 6
Tidak seperti objek argumen, parameter selebihnya secara automatik menukar argumen yang diluluskan kepada tatasusunan sebenar, menjadikannya lebih mudah untuk digunakan dalam JavaScript moden.
Walaupun kelebihan parameter yang lain, masih terdapat beberapa senario di mana hujah mungkin berguna, terutamanya dalam:
Objek argumen ialah mekanisme yang berkuasa namun mudah dalam JavaScript, mendayakan gelagat fungsi yang fleksibel, terutamanya apabila bekerja dengan bilangan argumen yang berubah-ubah. Walaupun ia tidak biasa digunakan dalam kod ES6 moden kerana sintaks parameter yang lebih bersih, ia masih merupakan alat yang berharga untuk memahami kerja dalaman fungsi JavaScript dan untuk mengekalkan projek lama.
Untuk butiran lanjut, lihat dokumentasi rasmi MDN pada objek argumen.
Atas ialah kandungan terperinci Memahami argumen Object dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!