Mari kita beri contoh terlebih dahulu. Fungsi dari fungsi ini adalah untuk mengembalikan jumlah elemen array
function sumArray(arr) { var jumlah = 0; for(var i = 0,aLength = arr.length;i < aLength;i++) { jumlah += arr[i]; } return sum; }
Ada spasi setelah kata kunci function
. sumArray
adalah nama fungsi. Konvensi penamaannya sama dengan nama variabel: hanya boleh berisi huruf, angka, garis bawah, dan tanda dolar angka dan tidak boleh berupa kata kunci.
Parameter dalam tanda kurung, disebut juga parameter formal , hanya memerlukan nama parameter. Parameter bisa berupa 0
, 1
atau lebih, dipisahkan dengan ,
dan {}
berisi fungsi body . Berisi satu atau lebih pernyataan. Badan fungsi digunakan untuk mengimplementasikan fungsi fungsi.
Kata kunci return
diikuti dengan nilai kembalian fungsi, dan fungsi tersebut juga tidak memiliki nilai kembalian. Setelah fungsi selesai dijalankan, pernyataan " return
akan keluar dari eksekusi, dan pernyataan di bawah return
tidak akan berjalan lagi . Nilai yang dikembalikan adalah output dari fungsi tersebut.
Fungsi yang didefinisikan dengan cara ini dapat dipanggil sebelum dan sesudah definisi fungsi , selama fungsi dan pernyataan yang memanggil fungsi tersebut berada dalam file sumber yang sama.
untuk mendefinisikan fungsi menggunakan ekspresi, yaitu menggunakan ekspresi penugasan untuk menetapkan fungsi ke variabel . Pada saat ini, fungsi dapat memiliki nama atau tanpa nama. Fungsi tanpa nama disebut fungsi anonim .
var funct = function getMax(a,b) { return a>b?a:b; };//Perhatikan bahwa titik koma setelah ini tidak boleh hilang, karena kita mendefinisikan variabel!
Berbeda dengan mendefinisikannya dengan pernyataan fungsi , fungsi hanya dapat dipanggil setelah pernyataan definisi fungsi Dan saat memanggil, hanya nama variabel funct
yang dapat digunakan, dan nama fungsi getMax
tidak dapat digunakan, seperti:
var funct = function getMax(a,b) {.
kembalikan a>b?a:b; }; console.log(funct(1,2));//Keluaran 2
function
:var funct = function(a,b) { return a>b?a:b; };
Fungsi ini tidak memiliki nama. Fungsi ini ditugaskan ke variabel funct
, sehingga disebut fungsi anonim. Demikian pula, fungsi ini hanya dapat dipanggil setelah pernyataan ini.
var fungsi = fungsi(a,b) { return a>b?a:b; }; console.log(funct(1,2));//
Ringkasan output 2: Mendefinisikan fungsi dengan ekspresi dapat digunakan secara langsung digunakan dalam pernyataan ini Kemudian panggil fungsinya
Pada pelatihan keempat, kita telah memperkenalkan bahwa objek dapat memiliki metodenya sendiri, tentu saja ini juga merupakan sebuah fungsi. Pemanggilan fungsi ini sedikit berbeda dari fungsi yang didefinisikan pada dua level sebelumnya.
//Definisi fungsi: mencari nilai maksimum dari tiga bilangan function max(a,b,c) { jika(a > b) { jika(sebuah > c) kembalikan a; kalau tidak kembali c; } kalau tidak { jika(b > c) kembali b; kalau tidak kembali c; } } //Panggil fungsi ini var result = max(1,2,3);//hasilnya adalah 3 console.log(result);//Output 3
Saat memanggil fungsi, Anda harus memasukkan jumlah nilai spesifik yang sama dengan parameter formal. Fungsi di atas memiliki 3
parameter, jadi saat memanggil di bawah, berikan 3
parameter spesifik nilai. , 1
diteruskan ke parameter a
, 2
diteruskan ke parameter b
, 3
diteruskan ke parameter c
. Nilai kembalian fungsi diteruskan ke variabel result
melalui simbol penugasan =
. Jika tidak ada kata kunci return
di badan fungsi, undefined
akan dikembalikan.
Memanggil fungsi yang didefinisikan dalam objek:
var ob = { nomor identitas:1, getMax:fungsi(a,b) { kembali a>b?a:b; } }; var result = ob.getMax(2,1);//Nilai hasil 2 var result1 = ob["getMax"](2,1);//Nilai hasil1 juga 2.
Selisih dari di atas adalah di sini Untuk mencari suatu fungsi, Anda perlu menggunakan对象名.函数名
atau对象名["函数名"]
, yang lainnya sama.
Di sebagian besar bahasa pemrograman, jumlah dan jenis parameter aktual yang diteruskan saat memanggil suatu fungsi dicentang, tetapi JavaScript
tidak memeriksa jenis atau jumlah parameter aktual.
Parameter aktual dalam JavaScript
akan sesuai dengan parameter formal secara berurutan dari kiri ke kanan , misalnya:
function myFunction(a,b,c) { konsol.log(a); konsol.log(b); console.log(c); } myFunction(1,2,3);
Parameter aktual 1
diteruskan ke parameter formal a
, parameter aktual 2
diteruskan ke parameter formal b
, dan parameter aktual 3
diteruskan ke parameter formal parameter formal c
. Ketika jumlah parameter aktual lebih kecil dari parameter formal, nilai undefined
akan diteruskan ke parameter formal yang tepat. Misalnya:
fungsi fungsi saya(a,b,c) { konsol.log(a); konsol.log(b); console.log(c); } myFunction(1,2);
Parameter aktual 1
diteruskan ke parameter formal a
, parameter aktual 2
diteruskan ke parameter formal b
, dan undefined
diteruskan ke parameter formal c
. Jika Anda hanya ingin meneruskan data ke parameter di sebelah kanan, Anda dapat meneruskan undefined
ke beberapa parameter aktual pertama. Misalnya:
function myFunction(a,b,c){ console.log(a); console.log(b); console.log(c)
; cukup ketat, praktik terbaiknya adalah menetapkan nilai default untuk parameter formal yang mungkin meneruskan nilai undefined
. Misalnya:
fungsi getSum(a,b,c) { jika(c === tidak terdefinisi) c = 0; console.log(a+b+c); } myFunction(1,2);
Segala sesuatu JavaScript
adalah objek, dan parameter sebenarnya juga merupakan objek . Ia memiliki nama khusus arguments
dianggap sebagai array (seperti array, bukan array nyata), parameter sebenarnya adalah arguments[0]、arguments[1]...
dari kiri ke kanan, arguments.length
mewakili jumlah parameter sebenarnya.
//Mencari jumlah parameter function getSum() { var aLength = argumen.panjang; var jumlah = 0; untuk(var i = 0;i < aPanjang;i++) { jumlah += argumen[i]; } return sum; } console.log(getSum(1,2,3,4,5))//Output 15.
Parameter formal di sini dihilangkan secara langsung dan diwakili oleh arguments[i]
.
JavaScript
kompleks
Pengembang perlu memeriksa korespondensi antara setiap parameter aktual dan parameter formal, yang sangat tidak efisien. Solusi yang baik adalah dengan menggunakan objek sebagai parameter, dan fungsi akan beroperasi pada parameter berdasarkan nama properti objek.
fungsi Fungsi saya(obj) { console.log(obj.nama); obj.number++; return obj.number; } myObj = {name:"myObj",number:34}; myFunction(myObj);//Output myObj console.log(myObj.number);//Output 35
suatu fungsi (disebut a
untuk kemudahan penulisan) dapat digunakan sebagai parameter fungsi lain (disebut fungsi b
), dan fungsi b
akhirnya dapat mengembalikan nilai tertentu.
Pada prinsipnya, fungsi b
memanggil fungsi a
dalam isi fungsinya sendiri, sehingga nama fungsi a
perlu diteruskan ke fungsi b
sebagai parameter sebenarnya. Sebagai berikut:
//Cari nilai maksimum function getMax(a,b) { return a>b?a:b; } //Cari nilai minimum function getMin(a,b) { return a<b?a:b; } //Fungsi berikut mengambil fungsi sebagai parameter dan akhirnya mengembalikan nilai function getM(func,num1,num2) { return func(num1,num2); //Return 1
Kita meneruskan nama fungsi a
( getMax
atau getMin
) ke fungsi b
( getM()
), lalu panggil a
yang diteruskan di dalam fungsi b
untuk mendapatkan hasil yang relevan.