Apa bedanya kedua kode ini?


Kode 1 :
<script>

	function satu(p) {
		console.log("Hallo 1");
		p();
	}

	var call = function() {
		console.log("Halo 2");
	}

	satu(call);

</script>

Kode 2 :
<script>
	function satu() {
		console.log("Hallo 1");
		call();
	}
	function call(){
		console.log("Hallo 2");
	}

	satu();
</script>

Output dari keduanya sama saja : Hallo 1 Hallo 2

avatar iamfreestyler
@iamfreestyler

341 Kontribusi 57 Poin

Diperbarui 6 tahun yang lalu

1 Jawaban:

baca tulisan saya gan irman disini : https://sekolahkoding.com/forum/apa-itu-execution-context-dan-execution-stack-pada-javascript https://sekolahkoding.com/forum/belajar-membaca-kode-javascript-1519483600

biar paham bagaimana cara javascript 'membaca' kode.

kode 1 : 1. baris 1 - 4, 'javascript' membuat pointer yang merefensikan pada fungsi yang bernama satu. 2. Baris 6 - 8, 'javascript' declare variabel 'Call', yang variabel ini isinya pointer ke anonymous function. 3. Baris 10, 'javascript' melihat adanya fungsi yang harus dipanggil, bernama satu. dia melihat ke memori eksekusi konteks global ada ngga pointer yang mereferensikan ke fungsi 'satu'. ternyata ada, oke berarti saatnya masuk ke dalam konteks eksekusi fungsi (lokal) 4. didalam fungsi tersebut pertama kali declare parameter p dengan value call (pointer yang mereferensikan sebuah fungsi (line 6-8)). 5.baris 2, Hallo 1 di print ke konsol. 6. baris 3, call menurapakan pointer menuju suatu fungsi, "()" menandakan fungsi minta dipanggil, "javascript" mengscan apakah ada fungsi yang direferensikan oleh 'call' ? ada ! di baris ke 6-8. 7. Masuk ke baris 6, masuk ke konteks eksekusi fungsi baru 8. Baris 7, print "Hallo 2". 9. Fungsi selesai ditandai dengan "}", keluar dari konteks eksekusi fungsi anonymous ( yang direferensikan oleh call). 10. Masuk kembali ke konteks eksekusi fungsi "satu". fungsi selesai juga. 11. Masuk kembali ke konteks eksekusi global. 12. (baris 10, setelah ";") tidak ada lagi kode yang dibaca. selesai.

kode 2 : jadi PR buat yang bertanya aja, :D

dari situ bisa keliatan perbedaanya gan ! semoga membantu!

avatar timelord
@timelord

140 Kontribusi 86 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban