Rumah >hujung hadapan web >tutorial js >Mari kita bincangkan tentang definisi dan penggunaan asas fungsi JavaScript
Artikel ini membawa anda pengetahuan yang berkaitan tentang javascript Ia terutamanya mengatur isu yang berkaitan dengan definisi dan penggunaan asas fungsi, termasuk definisi dengan penyataan fungsi, panggilan fungsi dan tidak ditentukan Mari kita lihat pada yang sebenar. parameter dan sebagainya. Saya harap ia akan membantu semua orang.
[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]
Mari kita berikan contoh dahulu Fungsi fungsi ini adalah untuk mengembalikan jumlah elemen tatasusunan
function sumArray(arr) { var sum = 0; for(var i = 0,aLength = arr.length;i < aLength;i++) { sum += arr[i]; } return sum; }
Ada ruang selepas kata kunci function
, dan sumArray
ialah fungsi Nama mempunyai konvensyen penamaan yang sama seperti nama pembolehubah: hanya boleh mempunyai huruf, nombor, garis bawah dan tanda dolar serta tidak boleh bermula dengan nombor atau menjadi kata kunci.
Parameter dalam kurungan juga dipanggil parameter formal dan hanya nama parameter diperlukan. Parameter boleh 0
, 1
atau lebih, dipisahkan dengan ,
dan {}
mengandungi badan fungsi . Mengandungi satu atau lebih pernyataan. Badan fungsi digunakan untuk melaksanakan fungsi fungsi.
kata kuncireturn
diikuti dengan nilai pulangan fungsi tersebut juga boleh tidak mempunyai nilai pulangan. Selepas fungsi selesai berjalan, return
ayat ini di sini akan keluar dari pelaksanaan, dan return
ayat berikut tidak akan dijalankan lagi . Nilai pulangan ialah output fungsi.
Untuk fungsi yang ditakrifkan dengan cara ini, anda boleh memanggil fungsi sebelum dan selepas definisi fungsi, selagi fungsi dan pernyataan yang memanggil fungsi itu berada dalam fail sumber yang sama .
Untuk mentakrifkan fungsi dalam bentuk ungkapan ialah menggunakan ungkapan tugasan untuk menetapkan fungsi kepada pembolehubah Ini sebenarnya untuk melihat fungsi sebagai pembolehubah. Pada masa ini, fungsi boleh mempunyai nama atau tiada nama Fungsi tanpa nama dipanggil fungsi tanpa nama.
var funct = function getMax(a,b) { return a>b?a:b; };//注意这后面的分号不能少,因为我们定义的是一个变量!
dan ditakrifkan menggunakan pernyataan fungsi Perbezaan antara ialah ia hanya boleh ditakrifkan selepas pernyataan definisi fungsi Panggil fungsi ini, dan apabila memanggil, anda hanya boleh menggunakan nama pembolehubah funct
, bukan nama fungsi getMax
, seperti:
var funct = function getMax(a,b) { return a>b?a:b; }; console.log(funct(1,2));//输出2
function
: var funct = function(a,b) { return a>b?a:b; };
Fungsi ini tidak mempunyai nama, ia diperuntukkan kepada pembolehubah funct
, jadi ia dipanggil fungsi tanpa nama . Begitu juga, hanya boleh memanggil fungsi ini selepas pernyataan ini.
var funct = function(a,b) { return a>b?a:b; }; console.log(funct(1,2));//输出2
Ringkasan: Mentakrifkan fungsi dengan ungkapan sedia untuk digunakan Setelah ditakrifkan, fungsi hanya boleh dipanggil selepas pernyataan ini
Dalam latihan 4, kami telah memperkenalkan bahawa objek boleh mempunyai kaedah sendiri, yang tentunya juga merupakan fungsi. Panggilan fungsi ini sedikit berbeza daripada fungsi yang ditakrifkan dalam dua peringkat sebelumnya.
//函数的定义:求三个数的最大值 function max(a,b,c) { if(a > b) { if(a > c) return a; else return c; } else { if(b > c) return b; else return c; } } //调用该函数 var result = max(1,2,3);//result为3 console.log(result);//输出3
Apabila memanggil fungsi, anda perlu memasukkan bilangan nilai tertentu yang sama seperti parameter formal Fungsi di atas mempunyai parameter 3
, jadi apabila memanggil yang berikut, masukkan 3
nilai khusus. Nilai 1
dihantar ke parameter a
, 2
dihantar ke parameter b
dan 3
dihantar ke parameter c
. Nilai pulangan fungsi dihantar kepada pembolehubah =
melalui simbol tugasan result
. Jika tiada kata kunci return
dalam badan fungsi, undefined
akan dikembalikan. Fungsi panggilan yang ditakrifkan dalam objek
:
var ob = { id:1, getMax:function(a,b) { return a>b?a:b; } }; var result = ob.getMax(2,1);//result值为2 var result1 = ob["getMax"](2,1);//result1的值也是2
Perbezaan daripada di atas ialah untuk mencari fungsi di sini, anda perlu menggunakan 对象名.函数名
atau 对象名["函数名"]
, yang lain ialah sama.
Dalam kebanyakan bahasa pengaturcaraan, nombor dan jenis parameter sebenar yang dihantar semasa memanggil fungsi diperiksa dan JavaScript
kedua-duanyaTidak menyemak jenis parameter sebenar, ia juga tidak menyemak bilangan parameter sebenar. Parameter sebenar dalam JavaScript
akan sepadan dengan parameter formal mengikut urutan dari kiri ke kanan , contohnya:
function myFunction(a,b,c) { console.log(a); console.log(b); console.log(c); } myFunction(1,2,3);
parameter sebenar1
parameter formal masuka
, parameter sebenar 2
diluluskan dalam parameter formal b
dan parameter sebenar 3
diluluskan dalam parameter formal c
. Apabila bilangan parameter sebenar kurang daripada parameter formal, nilai undefined
akan dihantar ke parameter formal yang betul. Contohnya:
function myFunction(a,b,c) { console.log(a); console.log(b); console.log(c); } myFunction(1,2);
parameter sebenar1
lulus dalam parameter formala
, parameter sebenar2
lulus dalam parameter formalb
, undefined
lulus dalam parameter formalc
. Jika anda hanya mahu menghantar data kepada parameter di sebelah kanan, anda boleh menghantar undefined
kepada beberapa parameter sebenar yang pertama. Contohnya:
function myFunction(a,b,c){ console.log(a); console.log(b); console.log(c); } myFunction(undefined,1,2);
Dua kaedah di atas tidak cukup ketat Amalan terbaik ialah menetapkan undefined
nilai lalai untuk parameter formal yang mungkin dihantar dalam nilai . Seperti:
function getSum(a,b,c) { if(c === undefined) c = 0; console.log(a+b+c); } myFunction(1,2);
JavaScript
一切都是对象,实参也是一个对象,有一个专门的名字arguments
,这个对象可以看成一个数组(类数组,不是真的数组),实参从左到右分别是arguments[0]、arguments[1]...
,arguments.length
表示实参的个数。
//求参数的和 function getSum() { var aLength = arguments.length; var sum = 0; for(var i = 0;i < aLength;i++) { sum += arguments[i]; } return sum; } console.log(getSum(1,2,3,4,5))//输出15
这里的形参直接省略,使用arguments[i]
表示。
复杂的函数通常多达十几个参数,尽管JavaScript
不做参数个数和类型的检查,但是调用时实参的顺序不能乱。开发人员需要检查每一个实参和形参的对应关系,这样效率很低。一种很好的解决方案是使用对象作为参数,函数会根据对象的属性名操作参数。
function myFunction(obj) { console.log(obj.name); obj.number++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//输出myObj console.log(myObj.number);//输出35
一个函数(为方便行文,称为a
函数)可以作为另外一个函数(称为b
函数)的参数,b
函数最终可以返回一个具体的值。
从原理上来说,b
函数在自己的函数体内调用了a
函数,所以需要把a
函数的名字作为实际参数传递给b
函数。如下:
//求最大值 function getMax(a,b) { return a>b?a:b; } //求最小值 function getMin(a,b) { return a<b?a:b; } //下面这个函数以函数作为参数,并最终返回一个值 function getM(func,num1,num2) { return func(num1,num2); } getM(getMax,1,2);//返回2 getM(getMin,1,2);//返回1
我们把a
函数的名字(getMax
或者getMin
)传给b
函数(getM()
),然后在b
函数内部调用传入的a
函数,得到相关的结果。
【相关推荐:javascript视频教程、web前端】
Atas ialah kandungan terperinci Mari kita bincangkan tentang definisi dan penggunaan asas fungsi JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!