Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah javascript melaksanakan lebihan fungsi?

Bolehkah javascript melaksanakan lebihan fungsi?

青灯夜游
青灯夜游asal
2022-01-18 14:52:002214semak imbas

Javascript boleh melaksanakan fungsi lebihan beban. Terdapat objek argumen di dalam fungsi JavaScript Anda boleh mendapatkan senarai parameter melalui objek argumen Anda boleh menentukan bilangan parameter dan menggunakan kaedah yang berbeza untuk mensimulasikan kesan lebihan fungsi.

Bolehkah javascript melaksanakan lebihan fungsi?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Adakah fungsi JavaScript menyokong lebihan muatan? Bolehkah beban lebih fungsi dilaksanakan? Mengenai isu ini, terdapat dua perkara utama Pertama, fungsi JavaScript;

Mula-mula, mari bercakap tentang lebihan muatan. Apa yang dipanggil lebihan beban, secara ringkasnya, adalah situasi di mana fungsi atau kaedah mempunyai nama yang sama tetapi senarai parameter yang berbeza Fungsi atau kaedah sedemikian dengan nama yang sama dan parameter yang berbeza dipanggil fungsi atau kaedah terlampau beban. Oleh itu, beban lebih memerlukan dua mata: pertama, nama fungsi yang sama. Kedua, parameter fungsi yang berbeza.

Selepas menjelaskan definisi terlebih muatan, kami kembali kepada JavaScript. Menelusuri kembali asal-usulnya, apabila kita bercakap tentang JavaScript sekarang, kita boleh memikirkan ECMAScript, standard untuk JavaScript. Jadi, apakah spesifikasi yang dibuat untuk fungsi dalam piawaian ini?

Pertama sekali, ECMAScript tidak mempunyai konsep tandatangan fungsi, kerana parameternya diwakili oleh tatasusunan yang mengandungi sifar atau lebih nilai. Tanpa tandatangan fungsi, lebihan beban sebenar adalah mustahil.

Kedua, jika dua fungsi dengan nama yang sama ditakrifkan dalam ECMAScript, nama itu hanya dimiliki oleh fungsi yang ditakrifkan kemudian, seperti berikut:

function add(num){
    return num+1;
}
function add(num){
    return num+2;
}
var result = add(4);  //结果为6

Dalam contoh di atas, tambah( ) fungsi ditakrifkan dua kali Walau bagaimanapun, apabila kita memanggilnya, fungsi kedua dipanggil secara langsung Ini menunjukkan bahawa dalam JavaScript, fungsi yang ditakrifkan kemudian akan menimpa fungsi yang ditakrifkan terlebih dahulu.

Setelah mengatakan ini, bolehkah kita membuat kesimpulan bahawa JavaScript tidak menyokong lebihan fungsi?

Izinkan saya memperkenalkan objek argumen dalam JavaScript. Pertama, parameter fungsi ECMAScript sedikit berbeza daripada parameter fungsi dalam bahasa lain. Fungsi ECMAScript tidak mengambil berat tentang bilangan dan jenis parameter yang dihantar. Iaitu, selepas anda menentukan fungsi untuk menerima hanya dua parameter, anda masih boleh melepasi sifar atau lebih parameter semasa memanggil. Ini tidak akan menyebabkan ralat. Sebabnya terletak pada objek hujah. Dalam ECMAScript, parameter fungsi sentiasa disimpan dalam tatasusunan, dan tatasusunan ini boleh diakses melalui objek argumen. Jadi, hanya gunakan atribut panjang untuk menentukan bilangan parameter yang diluluskan semasa memanggil fungsi.

Bercakap mengenainya, kita boleh cuba menulis seperti ini:

function add(num1, num2){
    if(arguments.length == 1){
        alert("你输入的只有一个数字:"+arguments[0]+" 请重新输入");
    }else if(arguments.length == 2){
        alert("你输入数字的和为:" + arguments[0]+arguments[1]);
}
}

Melalui contoh ini, kita dapat melihat bahawa dengan menyemak bilangan parameter yang diluluskan dalam fungsi, fungsi JavaScript boleh membuat tindak balas yang berbeza, yang secara tidak langsung boleh mencapai tujuan lebihan beban.

Jadi, JavaScript boleh meniru lebihan fungsi.

[Cadangan berkaitan: Tutorial pembelajaran javascript]

Atas ialah kandungan terperinci Bolehkah javascript melaksanakan lebihan fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn