Fungsi adalah blok kode yang dapat digunakan kembali yang didorong oleh suatu peristiwa atau dieksekusi saat dipanggil.
JScript mendukung dua fungsi: satu adalah fungsi di dalam bahasa (seperti eval ()), dan yang lainnya dibuat dengan sendirinya.
Variabel yang dinyatakan di dalam fungsi JavaScript (menggunakan VAR) adalah variabel lokal, sehingga hanya dapat diakses di dalam fungsi. (Ruang lingkup variabel ini adalah lokal).
Anda dapat menggunakan variabel lokal dengan nama yang sama dalam fungsi yang berbeda, karena hanya fungsi yang telah menyatakan variabel yang dapat dikenali.
Cara Memanggil Fungsi
1. Panggilan Normal: FunctionName (parameter aktual ...)
2. Panggilan melalui variabel yang menunjuk ke fungsi:
var myvar = nama fungsi;
myvar (parameter aktual ...);
Mengembalikan fungsi
1. Ketika fungsi tidak memiliki nilai pengembalian eksplisit, nilai yang dikembalikan "tidak ditentukan".
2. Ketika fungsi memiliki nilai pengembalian, ia mengembalikan apa pun nilai pengembaliannya.
Kita dapat mengembalikan fungsi ke tempat di mana ia dipanggil dengan menggunakan pernyataan pengembalian.
Saat menggunakan pernyataan pengembalian, fungsi menghentikan eksekusi dan mengembalikan nilai yang ditentukan.
Fungsi biasanya mengembalikan nilai yang unik, jadi nilai ini juga dapat menjadi fungsi lain:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
var box = function () {
var a = 1;
return function () {
Peringatan (A ++)
}
}
alert (box ()); // "function () {alert (a ++)}" muncul
</script>
Di sini kami hanya menetapkan nilai pengembalian ke variabel, dan kemudian kami dapat menyebutnya seperti menggunakan fungsi normal:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
var box = function () {
var a = 1;
return function () {
waspada (++ a)
}
}
var newfunc = box ();
newfunc (); // 2
</script>
Jika Anda ingin fungsi yang dikembalikan segera dieksekusi, Anda juga dapat menggunakan kotak () () untuk menjalankan kode ini.
Semua fungsi ecmascript dilewati oleh nilai, yang berarti bahwa parameter tidak akan dilewati dengan referensi.
PS: Jika ada lulus-demi-referensi, maka variabel dalam fungsi akan menjadi variabel global dan juga dapat diakses secara eksternal.
(1) Jenis nilai: numerik, boolean, nol, tidak terdefinisi.
(2) Jenis Referensi: Objek, Array, Fungsi.
Nilai Jenis Referensi: Mengacu pada objek -objek yang disimpan dalam memori heap, yang berarti bahwa variabel sebenarnya hanya pointer, yang mengeksekusi lokasi lain dalam memori, dan objek disimpan oleh lokasi itu;
Buat fungsi anonim
Salinan kode adalah sebagai berikut:
fungsi(){
kembali 'Lee'; // fungsi anonim tunggal tidak dapat dijalankan, dan bahkan jika mereka dapat dijalankan, mereka tidak dapat dipanggil karena tidak ada nama
}
Ada banyak penggunaan fungsi anonim ini di jQuery. Nyatakan fungsi anonim secara langsung dan gunakan segera. Keuntungan menggunakan fungsi anonim adalah bahwa mereka dapat menghindari mendefinisikan fungsi yang tidak digunakan sekali, dan bebas dari masalah penamaan konflik. Tidak ada konsep namespace di JS, jadi mudah untuk memiliki konflik nama fungsi. Setelah konflik penamaan dibuat, yang terakhir dinyatakan akan menang.
Jalankan fungsi anonim dengan eksekusi diri:
Salinan kode adalah sebagai berikut:
// Jalankan fungsi anonim melalui eksekusi diri
<type skrip = "Teks/JavaScript">
(function () {// (fungsi anonim) (); Letakkan fungsi anonim di tanda kurung pertama, dan jalankan dalam tanda kurung kedua.
peringatan ('Lee');
}) ();
</script>
Tetapkan nilai pengembalian fungsi anonim ke variabel:
Salinan kode adalah sebagai berikut:
// Tetapkan nilai pengembalian fungsi anonim yang dieksekusi sendiri ke variabel
<type skrip = "Teks/JavaScript">
var box = (function () {
peringatan ('Lee');
}) (); // Popt "Lee";
peringatan (kotak); // muncul tidak terdefinisi. Jika peringatan (box ()) ditulis, maka hanya "lee" yang muncul
</script>
Parameter yang lewat untuk fungsi anonim eksekusi diri:
Salinan kode adalah sebagai berikut:
// Eksekusi sendiri transfer parameter fungsi anonim
<type skrip = "Teks/JavaScript">
(function (usia) {
waspada (usia);
}) (100); // Popt 100
</script>
JavaScript membuat fungsi dinamis:
JavaScript mendukung pembuatan fungsi dinamis. Dynamic functions must be defined by Function objects (Function is an object in javascript, which is fixed and unchanged. It stipulates that the "F" of the Function object must be capitalized. When it is a function, we know that it is a keyword used when defining the function: function funName(x, y), when it is Function (when F is capitalized), we know that it is an object in javascript)
Format Dasar untuk Membuat Fungsi Dinamis: Var Variabel Nama = Fungsi Baru ("Parameter 1", "Parameter 2", "Parameter N", "Pernyataan Eksekusi");
Lihat kode berikut:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
var square = fungsi baru ("x", "y", "var sum; jumlah = x+y; return sum;");
Hasil peringatan ("persegi (2,3) adalah:"+persegi (2,3)); // Hasil kuadrat (2,3) adalah: 5
</script>
Square adalah fungsi yang dibuat secara dinamis. Setiap bagian dari konten dalam tanda kurung setelah objek fungsi harus dalam bentuk string, yaitu, itu harus tertutup dalam kutipan ("" atau '')
Kode ini:
var square = fungsi baru ("x", "y", "var sum; jumlah = x+y; return sum;");
Dan kode berikut:
Salinan kode adalah sebagai berikut:
function square (x, y) {
var sum;
jumlah = x+y;
jumlah pengembalian;
}
Persis sama, kecuali bahwa satu adalah fungsi dinamis dan yang lainnya adalah fungsi statis.
Mengapa kita membagi kode menjadi potongan -potongan kecil kode? , Keuntungan membagi string menjadi beberapa string independen adalah bahwa kita dapat mengubah fungsi fungsi kapan saja dengan memodifikasi beberapa string.
Fungsi panggilan balik
Callback adalah proses panggilan fungsi. Kemudian mulailah dengan memahami proses panggilan ini. Fungsi A memiliki parameter, yang merupakan fungsi b. Ketika fungsi A dieksekusi, fungsi B dieksekusi. Maka proses ini disebut panggilan balik.
Bahkan, bahasa Cina juga mudah dimengerti: panggilan balik, panggilan balik, yang berarti panggilan balik. Setelah menyelesaikan fungsi A, fungsi panggilan B nanti.
Harus jelas di sini: Fungsi B dilewatkan untuk berfungsi A dalam bentuk parameter, jadi fungsi B disebut fungsi callback.
Sebagian besar fungsi efek dalam jQuery melibatkan fungsi panggilan balik. fungsi efek jQuery
Misalnya:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
$ ("Div"). Show (1000, function () {
// fungsi panggilan balik
});
</script>
Di sini, fungsi callback dapat diganti dengan contoh:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
$ ("Div"). Show (1000, function () {
Console.log ("Hello World")
});
</script>
Callback sebenarnya, ketika suatu fungsi dieksekusi, fungsi yang sekarang dieksekusi adalah fungsi callback yang disebut. Bagaimana dengan itu? Mudah dimengerti ...
Perbedaan antara metode dan fungsi
Salinan kode adalah sebagai berikut:
var arr = [1,2,3,4,5]
var a = 12; // Variabel: Gratis
arr.a = 5; // atribut: milik suatu objek
function show () // function: gratis
{
waspada ('a');
}
arr.fn = function () // Metode: milik suatu objek
{
waspada ('b');
}
Bahkan, metode adalah fungsi, tetapi metode memiliki objek yang berada.
Seperti yang kita ketahui, fungsi mengikat untuk mengklik acara
tata bahasa:
$ (pemilih) .klick (fungsi)
Deskripsi parameter
Fungsi adalah opsional. Menentukan fungsi yang berjalan saat acara klik terjadi.
Bentuk ini sering terlihat di jQuery. Ini menggunakan fungsi sebagai parameter untuk menambahkan event handler ke metode.
Fungsi Global JS
Fungsi global bukan konsep dengan properti atau metode objek bawaan. Fungsi global bukan milik objek bawaan.
JavaScript berisi 7 fungsi global berikut untuk menyelesaikan beberapa fungsi yang umum digunakan:
Escape (), eval (), isfinite (), isnan (), parsefloat (),
parseint (), unescape ().
Beberapa fungsi fungsi
Gunakan sebagai konstruktor kelas
Salinan kode adalah sebagai berikut:
function class () {}
class.prototype = {};
var item = class baru ();
Digunakan sebagai penutupan
Salinan kode adalah sebagai berikut:
(fungsi(){
// ruang lingkup independen
}) ();
Disebut sebagai konstruktor
Konstruktor yang disebut adalah menghasilkan objek baru melalui fungsi ini.
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
function test () {
this.x = 10;
}
var obj = tes baru ();
waspada (obj.x); // pop 10;
</script>
Operator baru dapat digunakan untuk menggabungkan konstruktor yang telah ditentukan seperti objek (), tanggal (), dan fungsi () untuk membuat dan menginisialisasi objek. Pemrograman berorientasi objek adalah fitur yang kuat dari kemampuannya untuk mendefinisikan konstruktor khusus untuk membuat objek khusus yang digunakan dalam skrip. Konstruktor khusus dibuat sehingga objek dengan properti yang ditentukan dapat dibuat. Di bawah ini adalah contoh fungsi khusus (perhatikan penggunaan kata kunci ini).
Salinan kode adalah sebagai berikut:
Function Circle (xpoint, ypoint, radius) {
this.x = xpoint; // x Koordinat pusat lingkaran.
this.y = ypoint; // Koordinat Y dari pusat lingkaran.
this.r = radius; // jari -jari lingkaran.
}
Saat memanggil konstruktor lingkaran, nilai titik tengah dan jari -jari lingkaran diberikan (semua elemen ini diperlukan untuk sepenuhnya mendefinisikan objek melingkar yang unik). Pada akhirnya, objek lingkaran berisi tiga properti. Berikut adalah cara menggambarkan objek lingkaran.
var acircle = lingkaran baru (5, 11, 99);
Keuntungan menggunakan fungsi konstruktor adalah bahwa ia dapat menerima beberapa parameter saat membuat objek.
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
tes fungsi (nama) {
this.occupation = "coder";
this.name = name;
this.whoareyou = function () {
kembalikan "I'm" + this.name + "dan saya adalah" + this.occupation;
}
}
var obj = tes baru ('trigkit4'); // Buat objek yang berbeda menggunakan konstruktor yang sama
var obj2 = tes baru ('siswa');
obj.whoareyou (); // "Saya pemicu4 dan saya sudut"
obj2.whoareyou (); // "Saya murid dan saya sudut"
</script>
Dengan konvensi, kita harus memanfaatkan huruf pertama dari fungsi konstruktor untuk secara signifikan membedakannya dari fungsi umum.
Dua bentuk fungsi yang menentukan berikut ini setara.
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
var test = function () {
waspada ("halo dunia");
}
waspada (typeof (tes)); // fungsi output
</script>
Berikut adalah tes variabel, yang nilai awalnya ditugaskan ke entitas fungsi
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
function test () {
waspada ("halo dunia");
}
waspada (typeof (tes)); // fungsi output
</script>
Lihatlah formulir fungsi penentu berikut:
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
function test () {
waspada ("halo dunia");
};
test (); // Ini sebenarnya mengeluarkan halo, bukan?
function test () {
peringatan ("halo");
};
test (); // Hanya, halo adalah output
</script>
Jelas, fungsi pertama tidak berhasil, bukan? Kita tahu bahwa mesin parsing JavaScript tidak menjalankan kode baris demi baris, tetapi mengeksekusi kode sepotong demi sepotong. Dalam analisis dan pelaksanaan program yang sama, pernyataan fungsi rumus definisi akan dieksekusi terlebih dahulu, sehingga logika kode yang ditentukan pertama telah ditimpa oleh yang kedua, sehingga fungsi yang sama hanya akan dieksekusi dua kali.
Berfungsi sebagai nilai
Fungsi bukan hanya sintaks, tetapi juga nilai di JS. Dengan kata lain, fungsi dapat ditetapkan ke variabel, disimpan dalam atribut objek atau elemen array, dan diteruskan ke fungsi lain sebagai parameter.
Nama fungsi sebenarnya tidak terlihat, itu hanya nama variabel, yang mengacu pada objek fungsi
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
function square (x, y) {
mengembalikan x*y;
}
var s = persegi; // s dan persegi merujuk ke fungsi yang sama
persegi (2,3); // 6
S (2,4); // 8
</script>
Selain menetapkan fungsi ke variabel, fungsi juga dapat ditetapkan ke atribut objek. Ketika suatu fungsi disebut sebagai atribut objek, fungsi disebut metode.
Salinan kode adalah sebagai berikut:
<type skrip = "Teks/JavaScript">
var obj = {square: function (x, y) {// objek diukur langsung
mengembalikan x*y;
}};
var ect = obj.square (2,3);
</script>
Atribut Prototipe
Setiap fungsi berisi atribut prototipe, yang menunjuk ke referensi ke objek, yang disebut objek prototipe.
Lihat: JavaScript Learning Notes (V) Prototipe dan rantai prototipe
Fungsi lanjutan
Fungsi tingkat tinggi di sini bukan fungsi tingkat tinggi di angka tinggi. Fungsi yang disebut tingkat tinggi adalah fungsi yang mengoperasikan fungsi. Ini menerima satu atau lebih fungsi sebagai parameter dan mengembalikan fungsi baru.