--- title: Deklarasi Fungsi slug: Web/JavaScript/Reference/Statements/fungsi tags: - JavaScript - Pernyataan - Statement translation_of: Web/JavaScript/Reference/Statements/function ---
{{jsSidebar("Statements")}}

Deklarasi fungsi mendefinisikan sebuah fungsi dengan parameter-parameter yang ditentukan.

Fungsi juga dapat didefinisikan menggukanan konstruktor {{jsxref("Function")}} dan {{jsxref("Operators/function", "function expression")}}.

Sintak

function name([param,[, param,[..., param]]]) {
   [statements]
}
name
Nama dari fungsi.
param
Nama dari argumen yang akan dilewatkan kepada fungsi. Jumlah maksimal dari argumen berbeda-beda di setiap mesin.
statements
Statemen-statemen yang membentuk tubuh dari sebuah fungsi.

Deskripsi

Sebuah fungsi yang diciptakan dengan deklarasi fungsi adalah sebuah objek Function dan memiliki semua properti, method-method dan tingkah laku dari objek Function. Lihat {{jsxref("Function")}} untuk informasi mendetail tentang fungsi-fungsi.

Sebuah fungsi juga dapat diciptakan menggunakan sebuah ekspresi (lihat  {{jsxref("Operators/function", "function expression")}}).

Secara default, fungsi mengembalikan nilai undefined. Untuk mengembalikan nilai lain, fungsi tersebut harus memiliki sebuah {{jsxref("Statements/return", "return")}} statement yang menentukan nilai untuk dikembalikan.

Fungsi yang dibuat secara kondisional

Fungsi dapat dideklarasikan secara kondisional, yaitu sebuah statement fungsi dapat disarangkan di dalam sebuah statement if. Kebanyakan aplikasi perambah selain Mozilla akan memperlakukan deklarasi kondisional seperti itu sebagai sebuah deklarasi non kondisional dan menciptakan fungsi tersebut meskipun kondisi bernilai benar atau salah, lihat artikel berikut untuk ikhtisar. Untuk alasan tersebut, deklarasi kondisional seharusnya tidak digunakan -- untuk pembuatakan kondisional gunakan ekspresi fungsi sebagai gantinya.

Pengangkatan deklarasi fungsi

Deklarasi fungsi di javaScript mengangkat definisi fungsi. Kamu dapat menggunakan fungsi sebelum kamu mendeklarasikan fungsi tersebut.

hoisted(); // logs "foo"

function hoisted() {
  console.log('foo');
}

Dicatat bahwa {{jsxref("Operators/function", "function expressions")}} tidak terangkat:

notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function() {
   console.log('bar');
};

Contoh

Menggunakan fungsi

Kode berikut mendeklarasikan sebuah fungsi yang mengembalikan jumlah total penjualan ketika diberikan angka dari unit-unit yang terjual dari produk a, b, dan c.

function calc_sales(units_a, units_b, units_c) {
   return units_a * 79 + units_b * 129 + units_c * 699;
}

Spesifikasi

Specification Status Comment
{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}} {{Spec2('ESDraft')}}  
{{SpecName('ES6', '#sec-function-definitions', 'Function definitions')}} {{Spec2('ES6')}}  
{{SpecName('ES5.1', '#sec-13', 'Function definition')}} {{Spec2('ES5.1')}}  
{{SpecName('ES3', '#sec-13', 'Function definition')}} {{Spec2('ES3')}}  
{{SpecName('ES1', '#sec-13', 'Function definition')}} {{Spec2('ES1')}} Initial definition. Implemented in JavaScript 1.0.

Kompabilitas Perambah

{{CompatibilityTable}}

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Allowed in sloppy mode {{CompatChrome(49.0)}} {{CompatUnknown}}        
Trailing comma in parameters {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop("52.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Allowed in sloppy mode {{CompatNo}}

{{CompatChrome(49.0)}}

{{CompatUnknown}}        

{{CompatChrome(49.0)}}

Trailing comma in parameters {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("52.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

Lihat juga