Tiga alasan utama yang dapat saya pikirkan:
- Akses Lingkup Induk
- Pribadi
- Pengurangan nama yang didefinisikan dalam cakupan yang lebih tinggi
Akses Lingkup Orangtua: Definisi fungsi sebaris memungkinkan kode sebaris untuk memiliki akses ke variabel yang ditentukan dalam cakupan induk. Ini bisa sangat berguna untuk banyak hal dan dapat mengurangi jumlah atau kompleksitas kode jika dilakukan dengan benar.
Jika Anda meletakkan kode dalam fungsi yang ditentukan di luar lingkup ini dan kemudian memanggil kode, Anda harus melewati status induk apa pun yang ingin diakses oleh fungsi tersebut.
Privasi: Kode di dalam definisi anonim sebaris lebih pribadi dan tidak dapat dipanggil oleh kode lain.
Pengurangan nama yang didefinisikan dalam cakupan yang lebih tinggi: Ini yang paling penting saat beroperasi dalam lingkup global, tetapi deklarasi anonim inline tetap tidak harus mendefinisikan simbol baru dalam cakupan saat ini. Karena Javascript tidak mensyaratkan penggunaan namespace secara alami, adalah bijaksana untuk menghindari mendefinisikan simbol yang lebih global daripada yang dibutuhkan secara minimal.
Editorial: Tampaknya menjadi hal budaya dalam Javascript di mana mendeklarasikan sesuatu secara anonim dianggap "lebih baik" daripada mendefinisikan fungsi dan menyebutnya bahkan ketika akses ruang lingkup orang tua tidak digunakan. Saya menduga ini awalnya karena masalah polusi namespace global di Javascript, kemudian mungkin karena masalah privasi. Tetapi sekarang telah berubah menjadi sesuatu yang bersifat budaya dan Anda dapat melihatnya diekspresikan dalam banyak kode publik (seperti yang Anda sebutkan).
Dalam bahasa seperti C ++, sebagian besar mungkin akan menganggapnya sebagai praktik yang kurang ideal untuk memiliki satu fungsi raksasa yang meluas di banyak halaman / layar. Tentu saja, C ++ memiliki namespacing bawaan, tidak menyediakan akses ruang lingkup orang tua dan memiliki fitur privasi sehingga dapat dimotivasi sepenuhnya oleh keterbacaan / pemeliharaan, sedangkan Javascript harus menggunakan ekspresi kode untuk mencapai privasi dan akses ruang lingkup orang tua. Jadi, JS tampaknya hanya termotivasi ke arah yang berbeda dan itu menjadi hal yang agak budaya dalam bahasa, bahkan ketika hal-hal yang memotivasi arah itu tidak diperlukan dalam kasus tertentu.