Apa maksud function berikut?

Saya bingung kenapa function ini dibungkus oleh kurung buka/tutup? dan mengapa setelah tutup kurung function juga ada buka/tutup kurung lagi?


var foo = "Hello";

(function() {
  var bar = " World";
  alert(foo + bar);
})();

alert(foo + bar);

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Diperbarui 5 tahun yang lalu

2 Jawaban:

oh itu itu scope misal variable foo adalah variable global jadi bisa di akses di luar maupun di dalam fungsi kalo bar itu cuman bisa di akses dari dalem , tapi bisa juga dari luar tapi sy lupa caranya

avatar yudono
@yudono

55 Kontribusi 17 Poin

Dipost 5 tahun yang lalu

Tanggapan

Bisa bang, tapi caranya sedikit beda. Kalau mau akses local variabel bisa pake window.value

Jadi :

window.sayHello = "Azril ardian"; function show(){
alert(window.sayHello); }
show();

Jawaban Terpilih

itu namanya IIFE (Immediately-Invoked Function Expression) <a href='https://en.wikipedia.org/wiki/Immediately-invoked_function_expression'>https://en.wikipedia.org/wiki/Immediately-invoked_function_expression</a>

maksudnya itu function langsung tereksekusi pada saat script berjalan

<pre>dan mengapa setelah tutup kurung function juga ada buka/tutup kurung lagi?</pre> tanda kurung terakhir itu sebagai execution, makanya kenapa fungsi tersebut langsung berjalan. jadi bukan hanya deklarasi saja seperti fungsi pada umumnya

kalau di breakdown kurang lebih seperti ini

<pre> // function pada umumnya var foo = "Hello"; // named function function iife() { var bar = " World"; alert(foo + bar); } // execution iife(); </pre> nah kode diatas var iife dibuat anonymous function alias tanpa nama, dan langsung di kasih executionnya

<pre> // IIFE var foo = "Hello"; // anonymous function + execution (function() { var bar = " World"; alert(foo + bar); })(); </pre>

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban