Definisi Fungsi JavaScript
Fungsi JavaScript didefinisikan dengan
function
kata kunci.
Anda dapat menggunakan deklarasi fungsi atau ekspresi fungsi .
Deklarasi Fungsi
Sebelumnya dalam tutorial ini, Anda telah mempelajari bahwa fungsi dideklarasikan dengan sintaks berikut:
function functionName(parameters) {
// code to be executed
}
Fungsi yang dideklarasikan tidak langsung dieksekusi. Mereka "disimpan untuk digunakan nanti", dan akan dieksekusi nanti, ketika mereka dipanggil (dipanggil).
Contoh
function myFunction(a, b) {
return a * b;
}
Titik koma digunakan untuk memisahkan pernyataan JavaScript yang dapat dieksekusi. Karena deklarasi
fungsi bukanlah pernyataan yang dapat dieksekusi, tidak umum untuk mengakhirinya dengan titik koma.
Ekspresi Fungsi
Fungsi JavaScript juga dapat didefinisikan menggunakan ekspresi .
Ekspresi fungsi dapat disimpan dalam variabel:
Contoh
const x = function (a, b) {return a * b};
Setelah ekspresi fungsi disimpan dalam variabel, variabel dapat digunakan sebagai fungsi:
Contoh
const x = function (a, b) {return a * b};
let z = x(4, 3);
Fungsi di atas sebenarnya adalah fungsi anonymous (fungsi tanpa nama).
Fungsi yang disimpan dalam variabel tidak memerlukan nama fungsi. Mereka selalu dipanggil (dipanggil) menggunakan nama variabel.
Fungsi di atas diakhiri dengan titik koma karena merupakan bagian dari pernyataan yang dapat dieksekusi.
Fungsi() Konstruktor
Seperti yang Anda lihat pada contoh sebelumnya, fungsi JavaScript didefinisikan dengan function
kata kunci.
Fungsi juga dapat didefinisikan dengan konstruktor fungsi JavaScript bawaan yang disebut
Function()
.
Contoh
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
Anda sebenarnya tidak harus menggunakan konstruktor fungsi. Contoh di atas sama dengan penulisan:
Contoh
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
Sebagian besar waktu, Anda dapat menghindari penggunaan new
kata kunci dalam JavaScript.
Pengangkatan Fungsi
Sebelumnya dalam tutorial ini, Anda belajar tentang "mengangkat" ( JavaScript Hoisting ).
Mengangkat adalah perilaku default JavaScript untuk memindahkan deklarasi ke bagian atas cakupan saat ini.
Pengangkatan berlaku untuk deklarasi variabel dan deklarasi fungsi.
Karena itu, fungsi JavaScript dapat dipanggil sebelum dideklarasikan:
myFunction(5);
function myFunction(y) {
return y * y;
}
Fungsi yang didefinisikan menggunakan ekspresi tidak diangkat.
Fungsi Self-Invoking
Ekspresi fungsi dapat dibuat "memanggil sendiri".
Ekspresi self-invoking dipanggil (dimulai) secara otomatis, tanpa dipanggil.
Ekspresi fungsi akan dijalankan secara otomatis jika ekspresi diikuti oleh ().
Anda tidak dapat memanggil sendiri deklarasi fungsi.
Anda harus menambahkan tanda kurung di sekitar fungsi untuk menunjukkan bahwa itu adalah ekspresi fungsi:
Contoh
(function () {
let x = "Hello!!"; // I will invoke myself
})();
Fungsi di atas sebenarnya adalah fungsi self-invoking anonim (fungsi tanpa nama).
Fungsi Dapat Digunakan sebagai Nilai
Fungsi JavaScript dapat digunakan sebagai nilai:
Contoh
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
Fungsi JavaScript dapat digunakan dalam ekspresi:
Contoh
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
Fungsi adalah Objek
Operator typeof
dalam JavaScript mengembalikan "fungsi" untuk fungsi.
Tapi, fungsi JavaScript paling baik digambarkan sebagai objek.
Fungsi JavaScript memiliki properti dan metode .
Properti arguments.length
mengembalikan jumlah argumen yang diterima saat fungsi dipanggil:
Contoh
function myFunction(a, b) {
return arguments.length;
}
Metode toString()
mengembalikan fungsi sebagai string:
Contoh
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Sebuah fungsi didefinisikan sebagai properti dari suatu objek, disebut metode untuk objek.
Sebuah fungsi yang dirancang untuk membuat objek baru, disebut konstruktor objek.
Fungsi Panah
Fungsi panah memungkinkan sintaks pendek untuk menulis ekspresi fungsi.
Anda tidak memerlukan function
kata kunci, return
kata kunci, dan
tanda kurung kurawal .
Contoh
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Fungsi panah tidak memilikinya sendiri this
. Mereka tidak cocok untuk mendefinisikan metode objek .
Fungsi panah tidak diangkat. Mereka harus didefinisikan sebelum digunakan.
Menggunakan const
lebih aman daripada menggunakan var
, karena ekspresi fungsi selalu bernilai konstan.
Anda hanya dapat menghilangkan return
kata kunci dan tanda kurung kurawal jika fungsinya adalah pernyataan tunggal. Karena itu, mungkin kebiasaan yang baik untuk selalu menjaganya:
Contoh
const x = (x, y) => { return x * y };
Fungsi panah tidak didukung di IE11 atau sebelumnya.