Lesson function pada JavaScript akan membahas best practice deklarasi function.
Function pada JavaScript adalah first class object, yang berarti dapat diassign terhadap variable. Ada dua cara membuat function pada JavaScript,
- Declaration: function myFunc(){….}
- Expression: var myVar = function(){….}
Akan ada potensi masalah saat function expression digunakan, berikut contoh code singkat untuk melihat kemungkinan error tersebut.
//function-01 function myFunc(){ console.log('from my func'); } myFunc(); //function-02 myFunc(); function myFunc(){ console.log('from my func'); }
Dari contoh function-01 dan function-02, kita pahami fungsi akan dieksekusi tanpa masalah. Karena JavaScript hoisting, selain melakukan scanning pada deklarasi variable, juga melakukan scanning terhadap deklarasi function.
Sekarang kita bahas apa yang terjadi jika membuat function as expression.
//function-03 var myExp = function(){ console.log('from expression'); } myExp(); //function-04 myExp(); var myExp = function(){ console.log('from expression'); }
Pada function-03, kita dapat pahami tidak ada masalah, karena function myExp sudah dideklarasikan.
Pada function-04, jika sudah mengikuti lesson sebelumnya tentang variable, maka dapat diperkirakan bahwa JavaScript akan menampilkan error yang menyatakan TypeError: myExp is not a function.
Error diatas terjadi karena compiler akan mendeklarasikan var myExp sebagai variable dengan isi undefined.
Mungkin tidak semua programmer menggunakan function as expression. Namun bila akan menggunakannya, hal diatas perlu diperhatikan.
Kesimpulan
Best practice adalah selalu lakukan deklarasi diawal scope, baik itu global scope atau pun function scope. Ini berlaku untuk variable maupun function.