Definisi fungsi JavaScript
1: Panggil fungsi kata kunci untuk dibangun, seperti:
Jarak fungsi (x1, x2, y1, y2)
{{
var dx = x2-x1;
var dy = y2-y1;
Return math.sqrt (dx*dx+dy*dy);
}
2: Gunakan FUNION () Fungsi Bangun
var f = fungsi baru*"x", "y", "return x*y");
Baris kode ini menciptakan fungsi baru, yang pada dasarnya setara dengan definisi fungsional definisi sintaks yang Anda kenal:
Fungsi f (x, y)
{{
Mengembalikan x*y;
}
Functino () Konstruktor dapat menerima beberapa parameter string. Badan utama fungsi selama parameter terakhirnya, yang dapat berisi pernyataan JavaScript apa pun, pisahkan angka antara pernyataan. Parameter lain digunakan untuk menjelaskan string nama parameter formulir yang ditentukan oleh fungsi. Jika Anda mendefinisikan fungsi tanpa parameter, Anda hanya dapat melewati string (yaitu, subjek fungsi) ke konstruktor.
Perhatikan bahwa tidak ada parameter yang diteruskan ke fungsi konstruktor () yang digunakan untuk menjelaskan nama fungsi yang akan dibuat. Fungsi USEN -Named Dibuat oleh fungsi () Konstruktor kadang -kadang menjadi "fungsi anonim".
Anda mungkin ingin tahu fungsi apa fungsi () konstruktor yang digunakan. Mengapa tidak hanya menggunakan pernyataan fungsi untuk mendefinisikan semua fungsi? Alasannya adalah bahwa konstruktor fungsi () memungkinkan kita untuk membangun dan mengkompilasi suatu fungsi secara dinamis, yang tidak akan membatasi kita ke tubuh fungsi yang telah dikompilasi dengan pernyataan fungsi. Efek dampak negatif yang dibawa oleh ini adalah bahwa setiap kali fungsi disebut, konstruktor fungsi () harus mengkompilasinya. Oleh karena itu, kita seharusnya tidak sering menyebut konstruktor ini dalam badan loop atau dalam fungsi yang sering digunakan.
Alasan lain menggunakan fungsi pembuatan fungsi () adalah bahwa ia dapat mendefinisikan fungsi sebagai bagian dari ekspresi JavaScript, daripada mendefinisikan pernyataan.
3: Fungsi Kuantitas Langsung
Fungsi Kuantitas Langsung adalah ekspresi yang mendefinisikan fungsi anonim. Sintaks dari fungsi kuantitas langsung sangat mirip dengan pernyataan fungsi, tetapi digunakan sebagai ekspresi, bukan pernyataan, dan tidak perlu menentukan nama fungsi. Kode tiga garis berikut menggunakan pernyataan fungsi (), konstruktor fungsi (), dan fungsi fungsi untuk mendefinisikan tiga fungsi yang sama:
fungsi f (x) {return x*x};
var f = fungsi baru ("x", "return x*x;");
var f = function (x) {reurn x*x};
Meskipun fungsi secara langsung membuat fungsi yang tidak disebutkan namanya, sintaksnya juga menetapkan bahwa ia dapat menentukan nama fungsi, yang sangat berguna saat menulis dan memanggil fungsi rekursifnya sendiri. Misalnya:
var f = fact fact (x) {if (x <= 1) return 1;
Kode di atas mendefinisikan fungsi yang tidak disebutkan namanya dan disimpan dalam variabel F untuk referensi. Itu tidak benar -benar membuat fungsi yang disebut fact (), tetapi memungkinkan fungsi untuk menggunakan nama untuk mengutip dirinya sendiri. Namun, perlu dicatat bahwa versi JavaScript1.5 sebelumnya tidak dengan benar menerapkan fungsi fungsional dari nama ini.
Penggunaan fungsi fungsi sangat mirip dengan metode membuat fungsi dengan fungsi pembuatan fungsi (). Karena mereka semua diciptakan oleh ekspresi JavaScript, tidak dibuat oleh pernyataan, cara menggunakannya lebih fleksibel, terutama untuk fungsi yang hanya digunakan sekali dan tidak perlu disebutkan namanya. Misalnya, fungsi yang ditentukan oleh ekspresi pengukuran langsung fungsi dapat disimpan dalam variabel, diteruskan ke fungsi lain, dan bahkan secara langsung memanggil:
a [0] = function (x) {return x*x;};
a.sort (a, b) {return ab;});
var tensquared = (function (x) {return x*x;});
Seperti konstruktor fungsi (), fungsi secara langsung membuat fungsi yang tidak disebutkan namanya dan tidak akan secara otomatis menyimpan fungsi ini ke dalam atribut. Namun, dibandingkan dengan konstruktor fungsi (), jumlah fungsi langsung memiliki keuntungan penting. Subjek fungsi yang dibuat oleh fungsi () fungsi pembuatan harus dijelaskan oleh string, dan cara ini untuk mengekspresikan fungsi yang panjang dan kompleks canggung. Tetapi badan utama fungsi digunakan oleh sintaks JavaScript standar. Dan jumlah fungsi langsung diselesaikan sekali, dan kode JavaScript diteruskan ke fungsi () Fungsi membangun sebagai string ke fungsi () konstruktor hanya diuraikan dan dikompilasi sekali setiap kali konstruktor dipanggil.
Dalam JavaScript1.1, fungsi konstruktor () dapat digunakan untuk mendefinisikan fungsi. Anda harus memperhatikan perbedaan penting antara kedua metode ini.
Pertama, fungsi konstruktor () memungkinkan pembuatan dinamis dan kompilasi kode JavaScript selama runtime. Tetapi fungsi kuantitas langsung adalah bagian statis dari struktur fungsi, seperti pernyataan fungsi.
Kedua, sebagai hasil yang tak terhindarkan dari perbedaan pertama, setiap kali fungsi konstruktor () digunakan untuk menganalisis badan fungsi dan membuat objek angka Han Timur baru. Jika panggilan konstruktor muncul dalam suatu siklus atau muncul dalam fungsi yang sering disebut, efisiensi metode ini sangat rendah. Di sisi lain, fungsi bersarang yang dapat langsung muncul dalam siklus dan fungsi tidak dikompilasi ulang pada setiap panggilan, dan objek fungsi baru tidak dibuat kapan pun bertemu dengan jumlah fungsi langsung.
Titik ketiga antara jumlah antara fungsi () konstruktor dan fungsi adalah bahwa fungsi yang dibuat oleh fungsi konstruktor () tidak menggunakan lingkup frasa. Kode dijelaskan:
var y y = "global";
Fungsi constructionFunction () ()
{{
var y y = "lokal";
Mengembalikan fungsi baru ("return y");
}
// Baris kode ini akan menampilkan "global", karena fungsi yang dikembalikan oleh konstruktor fungsi () tidak menggunakan ruang lingkup lokal.
// Jika Anda menggunakan jumlah fungsi langsung, baris kode ini dapat menampilkan "lokal".
peringatan (konstruktur ());