objek hujah
Dalam kod fungsi, menggunakan argumen objek khas, pembangun boleh mengakses nama parameter tanpa menamakannya secara eksplisit.
Sebagai contoh, dalam fungsi sayHi(), parameter pertama ialah mesej. Nilai ini juga boleh diakses dengan argumen[0], iaitu nilai argumen pertama (argumen pertama berada pada kedudukan 0, argumen kedua berada pada kedudukan 1 dan seterusnya).
Oleh itu, fungsi boleh ditulis semula tanpa menamakan parameter secara eksplisit:
function sayHi() { if (arguments[0] == "bye") { return; } alert(arguments[0]); }
Bilangan parameter pengesanan
Anda juga boleh menggunakan objek argumen untuk mengesan bilangan parameter fungsi, hanya rujuk argumen properti.length.
Kod berikut akan mengeluarkan bilangan parameter yang digunakan dalam setiap panggilan fungsi:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
Kod di atas akan memaparkan "2", "0" dan "1" dalam urutan.
Nota: Tidak seperti bahasa pengaturcaraan lain, ECMAScript tidak mengesahkan sama ada bilangan parameter yang dihantar ke fungsi adalah sama dengan bilangan parameter yang ditentukan oleh fungsi tersebut. Fungsi yang ditentukan oleh pembangun boleh menerima sebarang bilangan argumen (sehingga 255, mengikut dokumentasi Netscape) tanpa menimbulkan sebarang ralat. Sebarang hujah yang hilang akan dihantar ke fungsi sebagai tidak ditentukan, dan fungsi tambahan akan diabaikan.
Simulasikan lebihan beban
Gunakan objek argumen untuk menentukan bilangan parameter yang dihantar ke fungsi untuk mensimulasikan lebihan fungsi:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } }
doAdd(10); //Output "15"
doAdd(40, 20); //Output "60"
Apabila hanya terdapat satu parameter, fungsi doAdd() menambah 5 pada parameter. Jika terdapat dua parameter, dua parameter itu ditambah dan jumlahnya dikembalikan. Jadi, doAdd(10) mengeluarkan "15", manakala doAdd(40, 20) mengeluarkan "60".
Walaupun tidak sehebat beban berlebihan, ia sudah cukup untuk mengatasi had ECMAScript ini.