Yaqinda Go dasturlash tilida IIFE sintaksis juda soddaligini ko'rib JavaScriptda ham shunday bo'lganda edi deb qoldim. Chunki Go'da funksiyani ortiqcha qavs ichiga olish shart emas ekan:
func(num int) int {
fmt.Println(num * num)
}(5)
JavaScript'da esa xuddi shu ifoda bunday bo'lardi:
(function(num) {
console.log(num * num)
})(5)
Shuni qavslarsiz qilsa bo'ladimi?
Ha! Faqat oldiga
void qo'yish kerak bo'ladi:
void function(num) {
console.log(num * num)
}(5)
Agar asinxron funksiya bo'lsa,
void yoki await qo'yish mumkin:
await async function(num) {
console.log(num * num)
}(5)
Lekin
void ishlatganimizda funksiya qiymati undefined bo'lib qoladi. Shuning uchun uni faqat "side-effect" uchun ishlatish mumkin.Shunaqa gaplar.