/* Selain perbedaan dari segi sintaksis, terdapat juga perbedaan perilaku
antara keduanya. Regular function dapat berupa function declaration atau
function expression, namun arrow function hanya berupa function expression
saja. Itu sebabnya arrow function memiliki nama lengkap “arrow function
expressions”. */
// Regular Function
// function declaration
/* Function declarations atau yang dikenal juga sebagai function statements
adalah fungsi yang telah dideklarasikan sebelumnya dan akan dieksekusi jika
dipanggil (call). */
// Function declarations harus dimulai dengan kata function. Contoh :
function sayHello(greet) {
console.log(`${greet}`);
}
sayHello(`Selamat Malam sahabat :)`) //memanggil fungsi
//function expression
/*Function expressions adalah fungsi yang disimpan ke dalam suatu variable
Setelah disimpan, maka variabel tersebut dapat digunakan sebagai fungsi.*/
//Contoh :
const sayName = function (name) {
console.log(`Nama saya ${name}`)
}
sayName("Muhammad Hifni");
// Arrow Function
// function expression
const sayHai = greet => console.log(`${greet}!`);
const urHobby = hobby => console.log(`Hobi saya ${hobby}`);
sayHai(`Hello Buddy!`); //memangil function sayHai
urHobby(`memperhatikan dan mempelajari ilmu dibidang teknologi :D`); //memanggil function urHobby
/* Karena arrow function merupakan sebuah expression, maka ia hanya dapat
digunakan untuk disimpan pada variabel (seperti contoh kode di atas),
sebagai argumen pada sebuah fungsi, dan sebagai nilai dari properti objek. */
// Stored in Variable
const sayLove = love => console.log(`Aku ${love} sama kamu <3`);
sayLove('cinta banget'); // memanggil fungsi sayLove
// Passed as An Argument
["Hifni", "Zulfa", "Muzafar"].forEach(name => console.log(`Nama saya ${name}`));
// Stored in Object Property
const user = {
introduce: name => console.log(`Hallo nama saya ${name}`)
};
// destructing object
const {introduce} = user;
introduce('Muhammad Hifni'); //memanggil function user