Salin kod Kod adalah seperti berikut: <br> //Nilai parameter pertama ujian fungsi(a,b,c,d){ <br> makluman(argumen[0]); } <br> //arguments[0] sebenarnya ialah a. Dalam cara yang sama, argumen[1] ialah b, diikuti oleh c, d<br> </skrip><br> <br><br> </div> <br><br><div class="codetitle"><span>Salin kod<a style="CURSOR: pointer" data="16696" class="copybut" id="copybut16696" onclick="doCopy('code16696')"><u></u> Kod adalah seperti berikut:</a></span></div> <script Language="JavaScript"><div class="codebody" id="code16696"> {<br> Function function_Name(exp1,exp2,exp3,exp4)<br> {<br> var umber="";<br> umber=arguments.length;<br> makluman(umber);<br> }<br> function_Name('a','b','c','d'); fungsi c", "d"); boleh dipanggil }<br> </skrip><br> <br><br> <br> <br>1. Dalam JavaScript, objek argumen ialah objek khas Ia sebenarnya merupakan sifat terbina dalam fungsi semasa. argumen sangat serupa dengan Array, tetapi sebenarnya bukan contoh Array. Ini boleh disahkan oleh kod berikut (sudah tentu, sebenarnya, dalam fungsi funcArg, tidak perlu menulis funcArg.arguments apabila memanggil hujah, hanya tulis hujah secara langsung). </div> <br><p></p> <p>Salin kod</p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="94670" class="copybut" id="copybut94670" onclick="doCopy('code94670')"> Kod adalah seperti berikut:<u></u></a> Array.prototype.testArg = "ujian";</span> fungsi funcArg() {</div> alert(funcArg.arguments.testArg); alert(funcArg.arguments[0]);<div class="codebody" id="code94670"> }<br> alert(new Array().testArg); // keputusan: "test"<br> funcArg(10); // hasil: "undefined" "10"<br> <br><br> <br>2. Panjang objek argumen ditentukan oleh bilangan parameter sebenar dan bukannya bilangan parameter formal. Parameter formal ialah pembolehubah yang dibuka semula dalam ruang memori dalam fungsi, tetapi ia tidak bertindih dengan ruang memori objek argumen. Apabila kedua-dua hujah dan nilai wujud, kedua-dua nilai itu disegerakkan, tetapi apabila salah satu daripadanya tidak mempunyai nilai, nilai itu tidak akan disegerakkan untuk kes tidak bernilai ini. Kod berikut boleh disahkan. <br> <br> </div> <p></p>Salin kod<p></p> <div class="codetitle"> <span> Kod adalah seperti berikut:<a style="CURSOR: pointer" data="34191" class="copybut" id="copybut34191" onclick="doCopy('code34191')"><u></u> fungsi f(a, b, c){</a> alert(arguments.length); // hasil: "2"</span> a = 100;</div> alert(arguments[0]); // keputusan: "100"<div class="codebody" id="code34191"> arguments[0] = "qqyumidi";<br> alert(a); // hasil: "qqyumidi"<br> alert(c); // hasil: "undefined"<br> c = 2012;<br> alert(arguments[2]); // keputusan: "undefined"<br> }<br> f(1, 2);<br> <br> <p>3. Daripada ciri pengisytiharan dan panggilan fungsi dalam JavaScript, dapat dilihat bahawa fungsi dalam JavaScript tidak boleh dibebankan. </p> <p>Mengikut asas untuk lebihan beban dalam bahasa lain: "Nilai pulangan fungsi adalah berbeza atau bilangan parameter formal berbeza", kita boleh membuat kesimpulan di atas: </p> <p>Pertama: Pengisytiharan fungsi Javascript tidak mempunyai jenis nilai pulangan </p> <p>Kedua: Tegasnya, bilangan parameter formal dalam JavaScript hanyalah untuk memudahkan operasi pembolehubah dalam fungsi Malah, parameter sebenar sudah disimpan dalam objek argumen. </p> <p>Selain itu, mari kita fahami dengan mendalam mengapa fungsi dalam JavaScript tidak boleh dilebihkan daripada fungsi JavaScript itu sendiri: Dalam JavaScript, fungsi sebenarnya adalah objek, dan nama fungsi ialah rujukan kepada fungsi, atau nama fungsi itu sendiri ialah pembolehubah. Untuk pengisytiharan fungsi dan ungkapan fungsi yang ditunjukkan di bawah, maksud sebenar adalah sama seperti di atas (tanpa mengambil kira perbezaan antara pengisytiharan fungsi dan ungkapan fungsi), yang sangat membantu kami memahami ciri yang berfungsi dalam JavaScript tidak boleh dibebankan. </p> <p></p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="15628" class="copybut" id="copybut15628" onclick="doCopy('code15628')"><u>Salin kod</u></a></span> Kod adalah seperti berikut:</div> <div class="codebody" id="code15628"> <br> fungsi f(a){<br> Kembalikan 10;<br> }<br> fungsi f(a){<br> Kembalikan a - 10;<br> }<br> // Tanpa mengambil kira perbezaan antara pengisytiharan fungsi dan ungkapan fungsi, ia bersamaan dengan yang berikut <br> var f = fungsi(a){<br> Kembalikan 10;<br> }<br> var f = fungsi(a){<br> Kembalikan a - 10;<br> }<br> </div> <p>4. Terdapat atribut yang sangat berguna dalam objek argumen: callee. arguments.callee mengembalikan rujukan fungsi semasa di mana objek argumen ini berada. Adalah disyorkan untuk menggunakan arguments.callee dan bukannya nama fungsi itu sendiri apabila menggunakan panggilan fungsi rekursif. </p> <p> adalah seperti berikut: </p> <p></p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="97875" class="copybut" id="copybut97875" onclick="doCopy('code97875')"><u>Salin kod</u></a></span> Kod adalah seperti berikut:</div> <div class="codebody" id="code97875"> <br> kiraan fungsi(a){<br> Jika(a==1){<br> kembali 1;<br> } <br> Kembalikan arguments.callee(--a);<br> }<br> var mm = kiraan(10);<br> makluman(mm);<br> </div> </div>