Takrif fungsi JavaScript
JavaScript menggunakan fungsi kata kunci untuk mentakrifkan fungsi.
Fungsi boleh ditakrifkan melalui pengisytiharan atau ia boleh menjadi ungkapan.
Pengisytiharan fungsi
Dalam tutorial sebelumnya, anda telah mempelajari sintaks pengisytiharan fungsi:
function functionName(parameters) {
Kod yang dilaksanakan
}
Fungsi ini tidak akan dilaksanakan serta-merta selepas ia diisytiharkan, tetapi akan dipanggil apabila kita memerlukannya.
Ungkapan fungsi
Fungsi JavaScript boleh ditakrifkan melalui ungkapan.
Ungkapan fungsi boleh disimpan dalam pembolehubah:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>函数可以存储在变量中:</p> <p id="demo"></p> <script> var x = function (a, b) {return a * b}; document.getElementById("demo").innerHTML = x; </script> </body> </html>
Selepas ungkapan fungsi disimpan dalam pembolehubah, pembolehubah juga boleh digunakan sebagai fungsi:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>函数存储在变量后,变量可作为函数使用:</p> <p id="demo"></p> <script> var x = function (a, b) {return a * b}; document.getElementById("demo").innerHTML = x(4, 3); </script> </body> </html>
Fungsi di atas sebenarnya Adalah fungsi tanpa nama (fungsi tidak mempunyai nama).
Fungsi disimpan dalam pembolehubah dan tidak memerlukan nama fungsi Ia biasanya dipanggil melalui nama pembolehubah.
Fungsi di atas berakhir dengan koma bertitik kerana ia merupakan pernyataan pelaksanaan.
Function() constructor
Dalam contoh di atas, kami mengetahui bahawa fungsi ditakrifkan melalui fungsi kata kunci.
Fungsi juga boleh ditakrifkan melalui pembina fungsi JavaScript terbina dalam (Function()).
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>JavaScrip 内置构造函数。</p> <p id="demo"></p> <script> var myFunction = new Function("a", "b", "return a * b"); document.getElementById("demo").innerHTML = myFunction(4, 3); </script> </body> </html>
Fungsi Mengangkat (Hoisting)
Dalam tutorial sebelum ini kita telah belajar tentang "hoisting".
Mengangkat ialah tingkah laku lalai JavaScript untuk menaikkan skop semasa ke hadapan.
Hoisting digunakan pada pengisytiharan berubah-ubah dan pengisytiharan fungsi.
Oleh itu, fungsi boleh dipanggil sebelum ia diisytiharkan:
myFunction(5); function myFunction(y) { return y * y; }
Pengangkatan tidak boleh dilakukan apabila mentakrifkan fungsi menggunakan ungkapan.
Fungsi panggilan kendiri
Ekspresi fungsi boleh "memanggil diri mereka sendiri".
Ekspresi panggilan sendiri dipanggil secara automatik.
Dipanggil secara automatik jika ungkapan diikuti dengan () .
Tidak boleh memanggil sendiri fungsi yang diisytiharkan.
Fungsi ialah objek
Menggunakan operator jenis dalam JavaScript untuk menentukan jenis fungsi akan mengembalikan "fungsi".
Tetapi adalah lebih tepat untuk menerangkan fungsi JavaScript sebagai objek.
Fungsi JavaScript mempunyai sifat dan kaedah. Sifat
arguments.length mengembalikan bilangan parameter yang diterima semasa panggilan fungsi:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p> arguments.length 属性返回函数接收到参数的个数:</p> <p id="demo"></p> <script> function myFunction(a, b) { return arguments.length; } document.getElementById("demo").innerHTML = myFunction(4, 3); </script> </body> </html>
Fungsi ditakrifkan sebagai atribut objek, yang dipanggil kaedah objek.
Jika fungsi digunakan untuk mencipta objek baharu, ia dipanggil pembina objek.