Fundamental JavaScript - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini kita akan membahas tentang berbagai topik fundamental JavaScript. Tentu saja bersama Ivan dan Eka. 🔔 Akan mulai mengudara pukul 20:00WIB ya. Yuk mari diramaikan! Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
Ringkasan Episode
Bantu KoreksiEpisode ini membahas konsep fundamental JavaScript yaitu Closure. Para host menjelaskan secara mendalam apa itu closure, bagaimana cara kerjanya, dan mengapa konsep ini penting untuk dipahami oleh developer JavaScript. Diskusi dimulai dengan penjelasan bahwa JavaScript adalah bahasa dengan first-class function yang memungkinkan function dipassing sebagai parameter. Pembahasan mencakup konsep lexical scope, outer scope vs inner scope, dan bagaimana closure memungkinkan sebuah function mengakses variabel dari scope luarnya. Contoh kode praktis juga ditunjukkan untuk membantu pemahaman, termasuk perbandingan dengan bahasa lain seperti PHP versi lama dan C yang tidak mendukung first-class function.
Poin-poin Utama
- •Closure adalah teknik untuk implementasi lexical scope name binding dalam bahasa dengan first-class function
- •JavaScript adalah bahasa first-class function di mana function bisa dijadikan parameter (higher order function)
- •Closure memungkinkan function mengakses outer scope-nya, yaitu variabel di luar function tersebut
- •Berbeda dengan PHP lama (sebelum versi 7) atau C yang tidak mendukung callback di dalam function
- •Closure sering ditanyakan dalam interview JavaScript sebagai pertanyaan fundamental
- •Konsep enclosed mereferensi surrounding state, memungkinkan akses ke variabel di dalam scope tertentu
- •Pemahaman closure penting untuk memahami konsep lanjutan seperti memoization dan React hooks
Transkrip Bantu Koreksi
0:00[musik]
0:07[musik]
0:11Halo semuanya
0:16mana sih?
0:18ya ada semuanya
0:20ya semua
0:21lebih-lebih lama-lama
0:23[musik]
0:26lagi pada capek kerjaya
0:28iya
0:30biar semangat
0:32iya nih
0:34saya nggak ngantuk
0:36[musik]
0:38oke
0:39buat nanti bikin teh nih
0:40buat nanti bikin teh anget
0:42supaya
0:43teh dari China
0:44baru aja
0:46baru aja kerja ya
0:48iya nih baru
0:49baru selesai di set down
0:51nah nih gue tutup nih
0:53nah
0:54selamat malam mas Ricky
0:56halo
0:58curhat nih ceritanya curhat
1:00curhat ya
1:02tapi salah bikin teh kamu mill
1:04malah ngantuk
1:06teh kamu mill itu bikin ngantuk ya
1:08lebih bikin tenang
1:10oh bikin tenang
1:11bukan ngantuk
1:12bikin relax
1:14bikin relax ya
1:15kalau capek plus relax sama dengan ngantuk lah
1:17ngantuk
1:19beli teh nggak di China kemarin
1:21di Shanghai
1:23beli dong
1:25banyak jual di mana-mana
1:27di Beijing
1:29liat harga tehnya
1:31mahal-mahal
1:33ada yang teh
1:35setan aja deh
1:37balik ke teh
1:39teh itu
1:41takut ketagihan
1:43dia banyak teh ininya mas
1:45banyak teh
1:46di emperannya tuh
1:48jualnya tuh sudah teh yang campur-campur gitu
1:50ada yang teh bunga
1:52ada teh bunga
1:54jadi tehnya banyak
1:56di mix
1:58yang di Shanghai kemarin ya
2:00yang di Beijing tuh
2:02waktu minum teh
2:04waktu malam yang pertama kali
2:06kita minum tuh malam yang pertama
2:08kan dikasih
2:10teh malam pertama
2:12teh hitam ya
2:14black tea ya black tea
2:16itu enak banget
2:18baru nyampe trus minum itu aduh enak banget
2:20bukan black tea
2:22itu kan
2:24kalau yang dina pertama itu
2:26dinner-dinner
2:28oh
2:30entah
2:32karena yang malam yang pertama itu
2:34saya kan sama Pak Dika
2:36dalam
2:38Diza Nebe
2:40oh bagi kedua
2:42yeah acara resmi pertama
2:44oh acara resmi pertama
2:46yang kita ketemu
2:48temen-temen yang lain
2:50udah ngumpul semua
2:52lupa
2:54itu luar biasa enak
2:56trus pas hari terakhir yang
2:58kita mau cari oleh-oleh begitu masuk ke toko teh
3:00waduh ini harganya
3:02maru
3:04itu yang toko
3:06yang kita sengaja nyari
3:08soalayan muslim gitu kan ya
3:10soalayan halal gitu kan
3:12yang apa
3:14yang isinya
3:16gak tau apa aja tuh bingung
3:18kayak barang-barang disusun
3:20berceseran gitu bingung juga
3:22mau beli yang itu
3:24iya
3:26ya gitu lah pokoknya selama disana
3:28minum teh tuh enak banget
3:30saking enaknya gak perlu pakai gula
3:32pun udah enak banget gitu kalau disini harus ditambah
3:34gula baru berasanya
3:36kalau disana kayaknya
3:38malah tabu ya pakai gula karena jadi
3:40kayak mengubah rasanya
3:42mengubah rasa
3:44kalau disini kalau gak ditambah gula ya
3:46karena mungkin itu kan
3:48sama aja kayak kopi kurang
3:50kalau kopi yang enak
3:52gak pakai gula juga udah enak
3:54gak kayak gue mau cari teh
3:56tanpa gula di Thailand itu
3:58gak bisa
4:00minta teh dikasihnya teh susu
4:02teh bukan
4:04teh susu kental manis
4:06teh susu gak pakai gula
4:08tapi pakai kental manis
4:10iya dan mereka bingung
4:12"lo mau apa?"
4:14kalau minta teh biasa
4:16berarti sama gula sama kental manis juga ya
4:18pokoknya teh langsung gula kental manis
4:20udah IT gitu
4:22gak bisa minta teh tanpa gula gitu
4:24gak ada cerita
4:26sekarang bayangin
4:28bayangin orang Thailand
4:30pergi ke Tiongkok, pergi ke China
4:32kusing deh
4:34minta teh "ini apa?"
4:36dikasih teh, dikasih teh
4:38dianggup sepet lagi, udah sepet, pahit
4:40gak manis, gak ada susunya
4:42sebenarnya teh itu kalau sepet itu
4:44berarti udah lama Eka
4:46teh itu sebenarnya kalau sepet
4:50salah
4:52kalau teh itu kalau sudah sepet
4:54iya kalau sudah sepet
4:56berarti kelamaan di rendam
4:58teh itu sebenarnya enak yang paling awal
5:00iya emang ada
5:04tergantung daun-daun
5:06ada yang kayak kayu-kayuannya
5:10buat yang biasa minum kubuman
5:12dan milki kan
5:14dianggup sepet dong
5:16pasti taste
5:18natural taste dari
5:20kayu-kayuan
5:22nah kalian pada
5:24pada nge-teh
5:26kalau sambil kerja, teh apa?
5:28komentar di kolom ini
5:30dan kalian coffee person
5:34atau...
5:36kalian minum apa pas lagi kerja?
5:38iya
5:40yang kerja suka teh atau coffee?
5:42lambangnya java script kan
5:44itu kan, lambangnya java script
5:46ada teh kan?
5:48java, coffee
5:50kan java sama java script
5:56sama
5:58beda lah
6:00java script
6:02di namain java script
6:04sebagai gimmick karena java lagi trend
6:06itu ada di episode berapa ya?
6:08kita sekalian di plan episode lama
6:10ini kita buang-buang waktu
6:12karena bingung sama topik ini
6:14yang harap sabar yang nonton
6:16biasa, iya pokoknya ada deh
6:18di episode dulu
6:20kita tunggu komen temen-temen
6:22baru ada Ricky disini, yang lain
6:24komen juga lah, baru kita mulai
6:26jadi kita belum waktu, sebenarnya
6:30otak saya belum nyambung
6:32karena baru aja nge-switch
6:34antara kerjaan
6:36makan buru-buru, dan langsung mulai
6:38jadi otaknya masih
6:40lagi pada sibuk ya
6:42lagi hektik
6:44lebih tepatnya
6:46biasa, agustus kan
6:48kenapa agustus, ada apa dengan agustus?
6:50kan ada siklus kehidupan
6:52itu sih, siklus kehidupan itu
6:54quarterly
6:56quarter kan, kalau misalnya
6:58di apa
7:00kalau nanti sudah
7:02habis ini quarter 4 nih
7:04quarter 4 itu sudah adalah
7:06kalau di dunia agensi dan enterprise itu
7:08quarter 4 itu adalah
7:10suatunya menyusun
7:12planning tahun depan dan
7:14apa namanya, pembiayaan
7:16apa, prokosal
7:18jadi
7:20budgeting
7:22terus bulan 1
7:24itu biasanya masih
7:26baru layih-layih
7:28baru habis
7:30habis new year
7:32nanti quarter 1 nya itu mulai
7:34kayak
7:36prokosal mana yang
7:38harus sijalankan
7:40dan quarter 2, quarter 3 itu sibuk
7:42nanti quarter 4
7:44laporan lagi dan budgeting lagi
7:46ya ini kan quarter 3
7:48diujung, sebentar lagi
7:50ujung quarter 3 kan
7:52sebentar lagi
7:54jadi
7:56sales sudah lewat
7:58sekarang lagi delivery
8:00itulah siklus kehidupan
8:02developer
8:06apa konsultan-konsultan
8:08konsultan
8:10jadi sebenarnya
8:16malam hari ini kan kita mau bahas tentang
8:18fundamental JavaScript, spesifiknya
8:20tentang closure
8:22mungkin tambah
8:24yang lain juga hosting
8:26ya hosting
8:28mumpung nih
8:30kalau biar
8:32makin seru kali ya
8:34teman-teman yang ada di
8:36yang lagi nonton, baik itu di
8:38LinkedIn atau di YouTube, boleh dong
8:40komen kira-kira ada
8:42topik fundamental JavaScript
8:44apa yang masih
8:46belum paham atau masih bikin bingung
8:48atau
8:50mungkin ada
8:52masih ingat ada beberapa pertanyaan
8:54interview yang berhubungan
8:56dengan topik JavaScript
8:58kita pengen tahu kira-kira yang ditest apa
9:00misalkan kayak, apa itu memoization
9:02di React itu kan sering ya
9:04pakai aja use memo
9:06tapi kan Reaction 16
9:10use memo sudah mulai ditirak
9:12sudah nggak ya, mulai ditirak
9:14contoh
9:16misalkan
9:18kalau React kan paling sering kan
9:20apa itu visual DOM
9:22eh virtual DOM, kok visual
9:24virtual DOM
9:26virtual DOM
9:28aku sampai bingung, apa sih visual DOM
9:30empat gue enggak tau ya
9:32iya
9:34itu
9:36siapa tahu kita bisa diskusi bareng-bareng
9:38aja lah ya, diskusi bareng-bareng
9:40tapi kalau nggak ada nggak apa-apa, kita bahas tentang
9:42closure
9:44apa itu closure
9:46penutupan
9:48penutupan
9:50closure itu kan
9:52penutupan
9:54oh iya
9:56closing ya
9:58closing
10:00bener juga
10:02kumpen Ivan bener
10:04kumpen, jahat banget
10:06biasanya ngaco
10:08iya
10:10jadi kalau di matematika ya
10:12istilahnya istilah matematika ya
10:14atau programming
10:16lanjut ya
10:18closure itu adalah
10:20teknik
10:22untuk implementasi
10:24leksikalscope name binding
10:26apa lagi
10:28oke
10:30in a language with
10:32first class function
10:34iya
10:36jadi bahasa fungsional ya
10:38JavaScript adalah
10:40bahasa yang first class function
10:42maksudnya apa, kelihatannya ini maksudnya
10:44function itu bisa dipasang sebagai
10:46programming kan ya
10:48iya, betul
10:50higher order function
10:52bahasa di mana
10:54function itu bisa
10:56di-oper-oper ke berbagai
10:58scope kan, berarti
11:00kalau dimasukin sebagai argument
11:02function itu bisa dipanggil
11:04dijalani di dalam
11:06function di dalam function
11:08yang mana itu berbeda scope
11:10nah, sebagai
11:12pembanding
11:14gimana Irvan, sebagai pembanding
11:16php jaman dulu
11:18di 54, php
11:20mungkin temen-temen bisa
11:22salahin nanti ya, php yang sebelum
11:247 itu kita nggak bisa
11:26bikin callback di dalam functionnya
11:28php contohnya, atau di
11:30C gitu kita nggak bisa panggil
11:32function di dalam
11:34function sebagai parameter
11:36di dalam sebuah function
11:38function sebagai parameter
11:40iya, kalau di
11:42JavaScript malah ada
11:44function bisa
11:46menjadi nilai untuk
11:48return, return value kan
11:50bisa jadi function kan
11:52ya, di return, ya kalau bisa dipasukin
11:54sebagai argument, bisa
11:56dikembaliin lagi ke atas
11:58tapi itu bukan
12:00istilahnya, bukan first class
12:02function ya sebutannya ya, itu mungkin
12:04apa ya namanya ya, kayak
12:08querying, bukan ya
12:10atau partial application, ya gitulah
12:12pokoknya, jadi
12:14first class function apa?
12:16tanya, sama
12:18JPD, Jemenai
12:20JPD, Jemenai
12:22dan teman-temannya
12:24intinya kan
12:26first class function itu
12:28kalau secara harfiahnya adalah
12:30fungsi di
12:32levelnya itu setara dengan
12:34variable dan struktur data yang lain
12:36seperti
12:38jenis variable lainnya
12:40ya, jadi sama lah
12:44tingkatannya
12:46stratanya sama, jadi
12:48jangan heran kalau
12:50fungsi itu bisa dimasukkan ke dalam
12:52struktur data kayak struktur data
12:54objek
12:56kalau tidak semua
12:58bahasa bisa seperti itu
13:00first class function
13:04kalau kata JPD begini
13:06function bisa
13:08di assign sebagai
13:10variable
13:12ada numerous function, oke
13:14bukan, di assign sebagai
13:16variable, oh, beda lagi
13:18ini ada contoh
13:20kodanya biar saya tunjukin, biar
13:22enak
13:24ada, ada, ada
13:26oh
13:28stop screen
13:30say hello sama teman
13:32saya sepindahkan dulu, ya betul
13:36nah, entire screen aja
13:38biar gampang
13:40nah
13:42sudah?
13:44sudah, gedein
13:46gedein dong, sembunyiin
13:48nah, sudah
13:50iya, kan ini
13:52anonymous function, grid ini
13:54kan anonymous function
13:56disimpan ke variable
13:58buka anonymous
14:00functionnya kan gak ada nama nih
14:02jadi variable
14:04jadi variable-nya
14:06gara-gara ada variable, jadi ada namanya
14:08coba kalau gak ada grid-nya, function
14:10langsung name kan gak ada nama kan
14:12ini anonymous function
14:14itu maksudnya
14:16kalau yang nomor 2, baru ada
14:18name function, bener gak?
14:20ini name function, ya
14:22name function
14:24ya, jadi kalau
14:26first class function, tapi keliatannya
14:28point, apa, point definisi
14:30first class ya bukan anonymous atau
14:32keliatannya, tapi bisa di assign ke suatu variable kan
14:34iya, level-nya kan sama
14:36bisa dimasukin ke variable
14:38jadi kayak bisa distur
14:40bisa distur di memory maksudnya
14:42iya
14:44bisa masuk ke variable
14:46di memory, jadi bisa dipanggil grid nih
14:48grid event, gitu kan
14:50bisa dipas sebagai
14:52bisa di-over sebagai argument
14:54nah, jadi yang
14:56di-lookup ini-situ bukan
14:58name function say hello-nya sendiri
15:00tapi si argument FN itu
15:02iya
15:04kalau teman-teman familiar dengan callback
15:06lah, inilah dia callback ya
15:08callback function
15:10konsepnya dari sini
15:12maksudnya, apa, apa itu
15:14first class function
15:16itu language
15:18bahasa apapun yang men-support
15:20hal-hal seperti ini kan
15:22berarti ada bahasa di mana
15:24function cuma bisa dijalani doang
15:26tapi gak bisa disimpen, gak bisa di-over-over
15:28ke sana-sini
15:30yang ketiga
15:32yang ketiga ini, kalau misalnya
15:34fundamental-nya belum ngerti
15:36pada asal pakai aja mungkin
15:38kalau di framework ya, nah ini tuh
15:40masih return function from another function
15:42kita lihat nih ya, multiplier ada
15:44faktor, dan dia return function
15:46x, dan x kali factor
15:48jadi si multiplier itu diisi
15:502, berarti kan faktornya 2 nih
15:52yang dipakai di dalam
15:54function return-nya
15:56iya kan
15:58nah, terus double itu kan
16:00berarti jadi function, karena
16:02return dari multiplier itu kan
16:04function ini kan
16:06iya kan, yang di mana
16:08faktornya 2
16:10pengali nya 2
16:12terus tinggal dipanggil double
16:145
16:16jadi kalau misalnya mau setup
16:18triple, berarti multiplier
16:203, triple
16:22x, eh
16:24berapapun lah ya
16:26jadi bisa dibikin
16:28ya function, return function
16:32dan function itu dipanggil
16:34bingung kan
16:36itulah first class
16:38ya sebetulnya, kayak
16:40itu kan fungsinya buat
16:42tujuannya buat bisa
16:44access atau bisa ngejalanin function yang
16:46di dalam itu tuh, yang di dalam
16:48multiplier, tanpa
16:50kayak, tanpa mengexpose lah
16:52tanpa mengexpose
16:54dalamannya multiplier itu kayak gimana
16:56apanya bagi yang
16:58manggil dari luar, yaudah
17:00panggil apa, bikin function-nya
17:02pakai multiplier aja
17:04betul
17:08atau bisa dipanggil langsung, pakai
17:10apa namanya, pakai kurung bulet 2 kali
17:122 kali, pertama kali
17:14ketemu itu, bingung tuh
17:16multiplier, malah bingung ya
17:18malah bingung ya
17:20dua, multiplier, dua
17:22dalam kurung lagi
17:24ya, karena kan
17:26fungsinya ada dua nih
17:28makin ke dalam, bisa-bisa
17:34begini lagi, kalau makin banyak return
17:36kalau ada lagi, return lagi ya
17:38nah
17:40closure itu
17:42yang konsep yang ketiga nih, ya mana tadi
17:44oh, udah-udah
17:46biarin, biarin
17:48ke definisi closure berarti
17:50nah, closure itu
17:52seperti ini
17:54kan tadi ini kan multiplier ya
17:56ada
17:58variable
18:00dari screen saya tadi
18:02iya
18:04hebat kan
18:06hebat banget
18:08manual
18:12oke, tadi
18:14menunjukkan multiplier 2 sama 3 kan
18:16udah ya, nah
18:18yang
18:20berhubungan dengan closure adalah
18:22ini, jadi ini
18:24ada sebuah parameter
18:26yang bisa dipakai di dalam fungsi
18:28di dalamnya
18:30itulah closure
18:32jadi dia bisa dapat
18:34konteks ya, bisa dapat konteks dari
18:36parameter
18:38apa, parentnya
18:40atau orang tuanya
18:44kalau anak, sekarang mungkin
18:46ngerti nya arrow function kali ya mas Tiza
18:48arrow functionnya, multiplier, terus
18:50dibikin arrow function, terus dibikin
18:52cons, gitu ya
18:54ya, itu tidak masalah
18:56itu simptak, sama aja kan
18:58harus refresh dulu nanti error soalnya
19:00scope-nya sama gak sih
19:02skopnya sama
19:04kalau di arrow function
19:06kayaknya ada perbedaan
19:08iya, kayaknya
19:10ada deh, ada bedanya apa ya
19:12return
19:14function lagi
19:16bisa langsung, bisa
19:18x ya, ya
19:20x kali fator
19:22pake tanda kurung apa ya
19:24yang return functionnya
19:26kayaknya bisa
19:28enggak tuh, bisa
19:30bisa tuh
19:323
19:34yay
19:38karena arrow function itu dia
19:40explicit return ya, oh iya
19:42anak sekarang taunya ini
19:44bukan yang tadi ya
19:46oh enggak juga, anak sekarang kan
19:48pake itu coding assistant
19:50nah coding assistant-nya
19:52training-nya pake data lama, jadi munculnya
19:54function, pake keyword function semua
19:56anak sekarang banget
19:58itu function lagi, train itu
20:00muter
20:02sebenarnya intinya itu, jadi
20:04lebih gampang
20:06yang tadi sih kalau menjelasinnya ya
20:08jadi si fator ini kan sebenarnya
20:10hanya bisa digunakan di sini
20:12sebenarnya kan
20:14apa ya, umumnya
20:16hanya bisa digunakan di sini kan
20:18tapi ternyata
20:20di dalam sini pun dia bisa dapat
20:22dia bisa
20:24dari atas ke bawah gitu ya
20:26kalau hoisting dari bawah ke atas
20:28dia ngikut
20:30jadi si fator ini
20:32di include ke dalam
20:34context
20:36atau closure ya
20:38ke dalam sini, jadi
20:40di sini ada, di sini juga ada, bisa
20:42tapi tidak sebaliknya
20:44x di sini enggak ada
20:46apa yang terjadi kalau
20:48clash
20:52saya const
20:54lagi, jadi di dalam function
20:56x saya const
20:58saya define
21:00initial class, oh define
21:02pertanyaan bagus
21:04mari kita coba
21:06jadi di sini ada
21:08const factor ya
21:10sama dengan 5
21:1215
21:14itu
21:16apa yang terjadi
21:18multiplier
21:22fator ini bebas kan
21:242, 3 ya yang tadi ya
21:26jadi ketiban
21:28ketimpa
21:30ketimpa
21:32yang lebih kecil
21:34tidak error
21:36tapi dia bikin
21:38value baru lagi
21:40tapi kalau dipanggil sebelum
21:42return function, fator itu
21:442
21:46iya, kalau di sini masih
21:482 kan di atas sini kan
21:50redefine
21:52kalau dikasih console lock
21:54di baris setelah
21:56multiplier fator itu kan
21:58iya
22:02nah itulah kira-kira basic
22:04konsepnya itu
22:06kalau penjelasan yang lebih ramah
22:10ramah sama web dev
22:12buka di MDN aja
22:14MDN
22:16oke
22:18ya jujurlah kita kan
22:20sebenarnya apa, pelajarin ini
22:22selain biar ngerti basicnya
22:24kita biar bisa jelasin
22:26pas interview, udah kayaknya kepakenya
22:28iya, tujuannya itu sebenarnya
22:30sehari-hari kita udah pakai
22:32kalau paham soal basicnya, tadi kan udah
22:34kalau biar tahu basicnya
22:36kalau ketemu prinsipnya
22:38tapi kita harus bisa ngejelasin
22:40ulang in case interview
22:42nah ini lebih
22:44friendly ke web dev
22:46ini ya, jadi kata dasarnya ada
22:48enclosed ya
22:50enclosed
22:52enclosed itu
22:54mereferensi surrounding
22:56state, berarti
22:58kayak luarnya ya
23:00ini outer scope ya
23:02bukan, surround state itu
23:04state di dalam
23:06di dalam satu
23:08di dalamnya malah bukan di luarnya
23:10ya ini ngaruh ke, ini kan
23:14closure gives a function
23:16access to each outer scope
23:18jadi membuat
23:20si suatu fungsi bisa
23:22mengakses outer scope-nya
23:24kayak kalau tadi berarti
23:26dari argument, nipas ke
23:28multiplier ya
23:30ya, coba, tadi kan
23:32begini ya, gimana kalau
23:34apus semua faktornya itu
23:38iya, ini kita apus, misalkan
23:40saya punya
23:42A sama dengan 5
23:44eh, udah di enter, nggak bisa ya
23:48maksudnya, kemudian apa ini?
23:52misalkan disini, saya bikin function
23:54add, kemudian
23:56B, ya
23:58return A
24:00+ B, bisa nggak sih?
24:02bisa, asal, bisa
24:04tapi A-nya nggak boleh const, harus
24:06let lah
24:08coba, add
24:105, 10, bisa
24:12bisa, dia dapet kan
24:14ini kan outer scope nih
24:16A ini
24:18dikenali di dalam fungsi
24:20yang di return cuma value-nya doang, bukan function
24:22itu mah bukan closure
24:24yang di return value-nya doang, iya
24:28kan ini outer scope, ini inner scope
24:30closure
24:32A itu, A-nya dipakai kan
24:34tapi nggak ada
24:36cuma mau demonstrate
24:38outer sama inner scope ya
24:40tapi kalau ini kan
24:42berarti bukan closure ya
24:44karena nggak ada function yang di dalamnya
24:46add kan
24:48oh, kalau closure itu harus
24:50ada function di dalam
24:52nggak juga sih, nggak
24:54closure itu maksudnya
24:56gives a function access to outer scope
24:58entah itu function
25:00entah itu variable
25:02oh, nggak harus function ya berarti?
25:04nggak harus
25:06atau biar
25:08selaras gini deh
25:10function calc
25:12terus misalkan tadi
25:14ons A sama dengan 5
25:164 deh
25:18terus function
25:20add
25:22B
25:24return A
25:26plus B, gitu kan
25:28maksud EKA ya
25:30terus ini, terus ini
25:32gitu kan, sama aja kan sebenarnya
25:34iya
25:36oh iya, ini jalan doang ya
25:38dot add
25:40nggak bisa ya
25:42gimana ini cara manggil ya?
25:44nggak bisa ya?
25:46kan calcnya nggak terima argument
25:50nggak bisa
25:52nggak di return kok
25:54calcnya nggak terima argument
25:56dan functionnya jalan doang
25:58iya, salah
26:00bukan gini, bukan gini
26:02harus return function biar bisa
26:04dipakai lagi dari dua
26:06nggak, nggak
26:08maksudnya
26:10si A ini
26:12meskipun tidak di dalam function
26:14di scope yang
26:16terluar itu dia
26:18tetap bisa masuk ke function
26:20yang di bawahnya, gitu lah
26:22yang contoh tadi
26:24jadi nggak mesti fungsi
26:26nggak mesti fungsi
26:28oke, lanjut
26:30ini kan
26:34iya, ini ada contoh
26:36tuh, bener
26:38contohnya nih
26:40jadi
26:42kita punya variable
26:44ini masih pakai var lagi ya
26:46display name
26:52itu pakai
26:54variable diluar
26:56yang menjadikan ini closure
26:58iya, tetap harus ada functionnya kan
27:00berarti, walaupun functionnya nggak
27:02oh iya, functionnya nggak harus
27:04di return, si display name
27:06itu kan nggak di return, tapi
27:08dijalani aja di dalam situ
27:10iya, dipanggil
27:12tapi kurangnya itu tadi berarti ya
27:14kayaknya nggak deh, tapi ya oke lah
27:20kita tampung dulu ya
27:22nggak tau, ini juga apa
27:24pemahaman gue bisa salah
27:26kan soto-soto berdasarkan baca-baca
27:28doang juga sih
27:30ini create local variable called name
27:32and function called display name
27:34the display name function is
27:36an inner function
27:38that is defined inside
27:40init, and is available only
27:42within the key of the init
27:44jadi kan
27:46display name itu nggak bisa
27:48dijalani dari luar init
27:50iya
27:52jadi
27:56note that display name function has
27:58no local variable
28:00iya, tapi bisa
28:02mengakses name yang diluarnya
28:08gimana kalau 3 tingkat
28:10masih bisa nggak? misalkan ada name
28:12ada display name, di dalam displaynya ada
28:14return function lagi
28:16ada function something-something
28:18iya
28:20iya, harusnya nggak apa-apa, bisa-bisa aja
28:22bisa juga, tetap bisa ya
28:24oh, tapi name, ya coba aja
28:28namenya harus
28:30explicitly reoper nggak ya?
28:32oh, kayaknya gue bilang sih
28:34bisa, tapi coba aja
28:36function init
28:38let name
28:42sama dengan mozilla
28:44mozilla
28:46terus function
28:48display name
28:50display name
28:52terus console log
28:54console log name
28:56terus dalamnya function lagi
28:58terus, dalamnya function lagi
29:00return lah
29:02function display display name
29:04oh, nggak usah ya, jangan ya
29:06function return
29:08display full name
29:12display upper
29:14return function
29:18function aja, nggak usah di return
29:20iya
29:22mau return atau nggak? nggak usah?
29:24nggak, pengen nyoba
29:26persis-persis banget sama
29:28pengen nyoba persis
29:30contohnya mdn, tapi tingkat 3
29:32masih bisa
29:34mengakses name atau nggak
29:36bisa ya
29:38bisa, tetap bisa ya
29:40feeling gue juga bisa
29:42ya bisa, cuma di coba aja
29:44namenya
29:46name to upper
29:48case
29:50gitu ya
29:52lah, ilang
29:54lah, ilang
29:56yaa
29:58gimana
30:00kebanyakan pencet
30:02bawah
30:04ya nggak asik
30:06yaa
30:08nggak jadi deh
30:10langsung BT gitu
30:12udah langsung down gitu
30:14langsung down
30:16mendingin
30:18di copass aja lah
30:20balang lagi
30:22ok, masih semangat
30:24let's go
30:26function
30:28display upper
30:30name
30:32dia males gitu
30:34console log
30:36name dot
30:38to upper case
30:40ok
30:42eh, pake ini ya
30:44iya
30:46itu function dunia harus di jalan
30:48functionnya
30:50terus bawahnya
30:52jalan dun
30:54nah, iya
30:56kopass dulu, jangan sampai ilang
30:58ok
31:00eh, coba sekarang
31:02ini
31:04oh iya bisa
31:06bisa, bisa, bisa
31:08bener, bener
31:10sound effect, ok
31:12iya
31:14padahal tadi
31:16udah nebak bisa juga ya, cuma pas udah ngebuktikan
31:18bener, kayak seneng banget aja
31:20ok
31:22berarti kan maksudnya mau disusun
31:24bingket pun, ya behaviornya tetep sama
31:26maksudnya ke bawah tuh
31:28si variable namenya bakal
31:30tersedia terus di
31:32masing-masing inner-inner
31:34functionnya
31:36ada perbedaan di sini
31:38ini menarik nih
31:40karena kan sebelumnya
31:42sebelum IS-6
31:44itu hanya ada dua jenis scope
31:46function scope
31:48sama global scope
31:50variable yang dideklarasikan
31:52dengan var
31:54baik itu di function scope
31:56atau global scope
31:58maka dia akan
32:00jadi global semuanya ya, kalau var ya
32:02kalau var global
32:08jadi global scope, yes
32:10meskipun kita definisinya
32:12di dalam function pun, dia bisa diakses
32:14di luar function itu ya?
32:16enggak
32:18dia nggak hoistik
32:20hoistik ya? ok
32:22hoistik apa lagi?
32:24nanti kita bahas
32:26kalau hoistik, gue belum tahu sama sekali
32:28kalau closure-nya, ingat
32:30pernah belajar, tapi ya
32:32kalau dikasih data kan lupa
32:34ini kan
32:36X ini bisa diakses dari luar
32:38meskipun dia didefinisikan
32:40di dalam dengan menggunakan var
32:42tapi itu kan bukan function
32:44oh iya
32:46ini scope ya
32:48untuk contoh tentang scope
32:50penjelasan tentang
32:52scope dengan red line constant
32:54nah kalau yang
33:00menggunakan bahasa seperti C dan Java
33:02itu akan error katanya
33:04karena
33:06outside scope of X
33:08iya
33:10PHA juga karena turunan C++
33:12di S6
33:16ini
33:18tidak error karena dia berlaku
33:20secara global
33:22karena if ya
33:24kalau ini function
33:26kalau dia function
33:28jadi hoisting ya?
33:30bukan jadi hoisting
33:32tapi dia tersimpan
33:34sebagai global variable
33:36global variable, bisa diakses
33:38di luar ya? pokoknya sekali
33:40didefinisikan, berarti dia di bawah
33:42dia kan jalannya dari atas
33:44kebawah
33:46kalau led dan cons
33:48hanya di dalam
33:50scope tidak global
33:52jadi akan error ya
33:54tidak bisa diakses
33:56karena dia
33:58hanya
34:00berlaku di dalam
34:02scope ini saja
34:04ya di masing-masing block
34:06nah kalau teman-teman mau melakukan ini
34:08biasanya deklarasi dulu di atas
34:10led X sama dengan 0
34:12atau sama dengan 0
34:14led X doang
34:18abis itu baru disini diubah
34:20abis itu baru disini bisa diakses
34:22X sama dengan 1, X sama dengan 2
34:24nah ini cuma ilustrasi saja
34:26jadi C-style
34:28C-style
34:30nah ini baru closure
34:32nah tadi atasnya ada pengaruhnya tuh
34:34atas sedikit, scroll atas sedikit
34:36nah in addition blablabla
34:38closures are able to capture variable
34:40in all these scopes
34:42berarti disemua scope
34:44bisa diakses oleh
34:46bisa diakses ya
34:48ok contoh ada name tadi
34:50ini sama ya
34:52ada name kemudian ada function display name
34:54kemudian kita bisa return display name
34:56return berarti ini return function ya
34:58oh makanya tadi
35:00pemahaman gue tadi kayaknya gara-gara
35:02pelajarnya disini deh
35:04bukan lah
35:06mempasing function
35:08return function ya
35:10kayak tadi contoh kita
35:12yang pertama banget
35:14return function langsung sebenarnya bisa kan ya
35:16bingung kan
35:20make func
35:22ya ini persis kayak contoh chat jpt tadi
35:24gue juga dulu belajarnya dari ini
35:26makanya berasumsi maksudnya closure ya
35:28harus ada function
35:30di dalam function
35:32function di dalam function nya itu bisa dijalani
35:34dari luar function
35:36ini sama aja dengan init tuh
35:38ini sama aja dengan init
35:40cuman caranya berbeda
35:42hasilnya sama
35:44oh yang berbeda adalah
35:46display name inner function
35:48itu return
35:50dari outer function
35:52sebelum di execute
35:54jadi maksudnya contoh yang baru ini
35:56kalau yang di init tadi kan display name nya
35:58langsung dijalani di dalam
36:00function itu sendiri
36:02ya yang ini yang bawah ini
36:04kalau ini belum dikembaliin
36:06di return function nya doang
36:08tapi nggak di execute belum dijalani
36:10jadi kalau di bahas
36:12di behind the scene nya itu
36:14dia cuma di return pointer
36:16aja
36:18jadi kalau misalnya kita
36:20di console lock kan
36:22nanti dia F hasilnya cuman F doang
36:24yang kayak tadi kan apa tadi
36:30multiplier ya
36:32makanya kayak ya multiplier ya
36:34persis kayak contoh awal dari
36:36set GPT itu
36:38init tapi nggak pake kurung
36:40maksudnya ya init nggak pake kurung
36:42nah
36:44ini tandanya adalah sebuah function
36:46ini yang nonton
36:54udah makin bingung apa
36:56makin jelas
36:58kayaknya makin bingung deh
37:02nah ini
37:04berikutnya adalah contoh
37:06make adder
37:08oh iya
37:10yang tadi ya
37:12sama persis kayak contoh
37:14event set GPT tadi
37:16multiplier lah
37:18add 5, make adder 5
37:20kalau orang yang belum
37:22tau konsep closure atau belum
37:24menghasilkan bingung add 5 itu
37:26dikira bakal add 5
37:28kalau di console lock itu value padahal nggak
37:30itu juga function juga kan
37:32ternyata ada yang
37:36ada yang ngikutin ya
37:38makin jelas
37:42jelasnya huru besar semua lho
37:44itu sarkas
37:48atau gimana ya
37:50secur juga gitu
37:52kita meneluhas secara harfiah
37:54ya kita terima
37:56terima kasih
37:58tapi
38:00ini
38:02kayak
38:04gini
38:06oke ini kan
38:08kita punya fungsi
38:10yang menerima satu parameter
38:12kemudian meretun fungsi
38:14yang menerima satu parameter
38:16kemudian itu ditambahkan
38:18sebenernya kan sama aja kayak gini kan
38:20function add
38:22a, b return
38:24a + b
38:26atau x, y sama aja ya
38:28kan sebenernya kurang lebih fungsinya
38:30mirip kan seperti itu kan
38:32cuman ini
38:36dia bisa dieksekusi
38:38per satu parameter
38:40satu parameter nggak langsung dua
38:42bener kan
38:44ini bukannya partial ya
38:46atau querying ya
38:48nggak tau, selalu itu nyerah
38:52belum nyampe situ
38:54belum ya
38:56coba ya
38:58tanya aja di chat gpt lagi aja
39:00gimana tuh ini kasus ini
39:02coba gini
39:06kari
39:08makanan kari
39:10kuri
39:12c-u-r-r-y
39:14istilah matematika
39:22partial function
39:24iya partial function
39:26atau partial application
39:30iya betul
39:38bener kan
39:40itu kari
39:42mau dong
39:44kari
39:46yang di search kari makanan
39:50nggak, saya nanya ini
39:52saya nanya si
39:54chat gpt
39:56saya
39:58cuma mau mengatakan
40:02chat gpt-nya
40:04di approve dari
40:06saya pakai account company, jadinya
40:08enak ya, nggak perlu bayar lagi
40:10enak
40:12ya, terus
40:14karing means, terus kan kalau standard
40:16function-nya kayak Mas Liza bilang tadi kayak gini
40:18ya bener tuh
40:20versi kuri-nya
40:22function, function, dan terakhir
40:24terus panggil kayak gini
40:26dan kalau error function-nya kayak gini
40:28why kuring
40:32partial application, you can preset some argument
40:34and re-use the function
40:36kita bisa satu-an kan
40:38iya, jadi
40:40secara parcial
40:46berarti
40:48prinsip ini
40:50kalau function di dalam function
40:52namanya closure kan, itu yang
40:54dimaksud dengan closure, itu kalau
40:56ada function di dalam function
40:58bukan, closure itu
41:00variable-nya
41:02bukan cuma variable Mas Liza
41:04function yang di dalam bisa mengakses
41:06variable yang dari luar
41:08variable yang di atasnya
41:10ya, apapun yang di atasnya
41:12itu artinya closure ya, betul
41:14warisan-warisan
41:16bukan ya, kalau di OOP itu
41:18kan ada apa istilahnya, inheritance
41:20yes, yang kayak scoping
41:22tadi sih sebenarnya, scoping
41:24scoping ya, scoping ya
41:26apapun entah itu variable
41:28atau function
41:30atau class, dia bisa akses
41:32di dalam
41:34scope itu
41:36jadi kalau bisa di define di atas
41:38sampai ke bawah-bawah
41:40ke recursive bisa di akses
41:44nah, kalau gitu coba
41:46tanya chat GPT-nya
41:48bisa nggak generate contoh
41:50prinsip closure
41:52ya, termasuk yang mengakses variable
41:54itu, tapi jangan yang kita
41:56tanpa
41:58menggunakan inner function
42:00di dalam function
42:02contoh lainnya kayak gimana, soalnya
42:04kalau di MDN kan nggak ada
42:06gimana generate closure example
42:14yang bukan kayak gitu tadi
42:16yang bukan
42:20tanpa function
42:22di dalam function
42:24function, di dalam function
42:28kalau contoh yang tadi udah ngerti
42:32maksudnya gua udah paham, dan udah bisa
42:34ngejelasin
42:36kenapa itu closure, mana
42:38variable yang bisa di akses
42:40kalau di
42:42MDN dan lain-lain, semua contohnya
42:44bentuknya kayak gitu
42:46ada function yang jalan
42:48di dalam function, yang mana kalau dipanggil dari luar kan
42:50otomatis function yang di dalam itu
42:52ikut, dijalankan
42:54dengan
42:56argumen yang disupply dari luar
42:58kalau itu ngerti, nah coba pengen contoh lain
43:00yang bukan kayak gitu, yang bukan
43:02function di dalam function, tapi closure
43:04apapun disco parentnya bisa
43:10akses anak-anaknya
43:12tapi nggak mesti argumen kan
43:16variable pun bisa kan ya
43:18beda sih, maksudnya
43:22kalau misalnya
43:24si Eka, kalau tanpa function ya
43:26tanpa closure, itu
43:28semua bisa, semua
43:30bahasa pemograman bisa, karena
43:32misalnya kita bikin
43:34saya sambil show aja ya
43:38sambil show aja
43:40oke, kita kasih
43:44contoh dulu yang
43:46bukan yang Eka mau
43:48contohnya, delay message
43:50message sama delay
43:52terus ada set timeout
43:54message-nya apa, dan delay-nya
43:56dipanggil, ini di luar function ya, karena ini delay
43:58parameternya
44:00set timeout kan sebenarnya kan
44:02bisa dipanggil begini, delay message
44:04this is closure, 2 detik
44:06nah itu contoh
44:08contohnya, kalau yang
44:10contoh sebelumnya, kayak gini kan
44:12jadi security bisa di akses
44:14nah kalau itu kan contoh yang standar ya
44:16nah, sedangkan kalau
44:18kalau yang
44:20tanpa
44:22tanpa function ya semua pemograman
44:24bisa, contohnya ya kalau kita kayak
44:26function kayak gini
44:28misalnya, langsung
44:32grid aja kan, langsung console log
44:34aja kan
44:36jadi begini kan
44:40misalnya, atau
44:42ya kayak yang tambah-tambah tadi
44:46kayak yang pertama ya, yang pertama tadi
44:48nah, ini, itu termasuk
44:52contoh, demonstrasi, prinsip
44:54closure, atau bukan? bukan, bukan
44:56bukan, nah ya
44:58nah bukan, berarti mahamun
45:00gue udah betul kan, apa, harus
45:02ada functionnya yang membuat scope baru
45:04iya, yang membuat dia di dalam
45:08sebuah scope tersendiri, karena
45:10begini pun, kalau misalnya di bahasa pemograman
45:12lain tanpa closure
45:14if true, misalnya
45:16gitu ya, ini kan dalam sebuah
45:18sebuah block ya
45:20bukan scope ya, ini block
45:22fungisional block
45:24ini, ini kan tetap
45:26bisa
45:30tetap bisa sebenarnya, karena ya
45:32ini, di dalam sebuah
45:34namenya dianggap ada, namenya bisa
45:36di access, dari dalam
45:38sedangkan, kalau php
45:40kamu bikin begini
45:42gak bisa
45:44eh, bisa gak sih, return function
45:46function di dalam function
45:48bisa, function di dalam function
45:50tapi
45:52gak bisa begini, namenya gak ada
45:54echo name gak kan bisa
45:56di php itu
45:58unless variable name
46:00unless di php
46:02dibikin use name
46:04use name
46:06itu kan harus kipas
46:08variable name-nya, explicit
46:10ke dalam scope baru
46:12supaya
46:14ya kayak gini lah
46:16kipasin lagi
46:18kipasin
46:20jadi, jadi kaya itu ya
46:22prop drilling ya, kalau
46:24di react tuh ya
46:26hahaha
46:28gak tau prop drilling
46:30itu react jaman dulu, sebelum ada
46:32react jaman dulu
46:34yang gak pake konteks
46:36iya, masih prop
46:38dipasing, dipasing, dipasing
46:40ah, itu namanya
46:42ya cuma gak tau
46:44pake sih, tapi gak tau
46:46di setiap bagian UI kan
46:48misalnya kita mau nampilin text
46:50sesuatu, kalau user login
46:52tampilin ini, kalau nggak
46:54tampilin itu, nah itu kan
46:56berarti dari luar banget harus kayak terima
46:58terima prop, masing-masing
47:00komponen harus terima prop
47:02sebelum pakai state tuh
47:04masih ada gak ya contohnya
47:06sebelum ada state dan konteks
47:08sebelum ada state dan konteks
47:10nah gak, tapi
47:12berarti kalau balik ke prinsip kursor
47:14kalau gak ada function
47:16di dalam function, kan dia gak bikin scope
47:18baru ya, untuk
47:20mendemonstrasiin contoh itu
47:22berarti kan kayak secara gak langsung
47:24harus ada sesuatu yang bikin scope
47:26baru kan, di dalam function-nya
47:28biar itu bisa digulangkan
47:30iya, iya sih
47:36apa?
47:38itu udah, itu bukan scope
47:40itu udah, itu bukan scope
47:42itu udah, itu bukan scope
47:44itu udah, itu bukan scope
47:46itu kan berarti belum ada
47:48itu udah, itu bukan scope
47:50jadi
47:52kalau misalnya di interview kita ditanyain
47:54ini closure atau bukan
47:56kita bisa dengan yakin bilang gak kan
47:58karena gak bikin scope baru alasannya
48:00jadi mungkin alasannya bukan karena
48:02bukan cuma karena gak ada function
48:04di dalam function, tapi karena gak ada
48:06scope baru yang
48:08gak bikin scope baru yang mana
48:10bisa mengakses si variable A atau B
48:12itu kan
48:14ada gak ya
48:16chat GPT bisa dilatih, jadi pelatih
48:18interview beginian gak sih?
48:20biar PD jawabnya
48:22iya, iya menarik juga ya
48:24biasanya, ini ya temen-temen
48:26ada, mungkin ada
48:28pengalaman pertanyaan-pertanyaan
48:30interview seputar Javascript
48:32apa sih, apa aja sih yang ditanyain
48:34nah, jadi kayak yang
48:36baru-baru ini, di interview
48:38nggak, kayak yang
48:40baru-baru ini nih kita
48:42gak ribut-ribut sih, cuman
48:44kita jangkir balik otak
48:46mikir, apakah
48:48untuk disebut closure, harus function
48:50di dalam function, itu kan sebenarnya kalau di dunia
48:52nyata, ya gak penting-penting amat juga ya
48:54yang penting kita bikin unit testnya aja semua
48:56udah sesuai sama expected atau belum
48:58kita kan bakal lihat sendiri, kalau ada yang
49:00kalau yang, ya maksudnya kita
49:02pasti ngejalanin, dan kita bikin unit testing
49:04kalau ada variable yang kita expect
49:06ada, taunya gak ada, ya berarti harus
49:08ngepro, harus error, ya kan
49:10gak ada yang bakal nanya juga, ini closure
49:12atau bukan, pertanyaannya adalah
49:14ini jalan, jalan dengan
49:16ini jalan sesuai expectation atau
49:18nggak, ya cuman, maksudnya tanggung jawab kita
49:20harus bisa ngejelasin aja
49:22ini ada contohnya nih, mau coba nggak
49:24pertanyaan Javascript
49:26fundamental
49:28iya
49:30iya, yang tentang closure lah, jangan
49:32tentang lain-lainnya, topiknya lagi closure
49:34iya
49:36nggak apa-apa, nggak apa-apa
49:38kan udah jelas kan ya, closure
49:40kalau teman-teman ada pertanyaan seputar
49:42closure boleh ya
49:44boleh ditanyakan
49:46hoisting, oh beneran ada closure ya
49:50iya
49:52hoisting
49:54oh paling sering ya
49:56iya maksudnya
49:58paling umum, salah satu yang umum
50:00ini kalau A apa
50:02isinya
50:04kalau A
50:06ini
50:10kalau konsolok A apa isinya?
50:12nul, nul, nul
50:14kalau konsolok B
50:16konsolok B
50:18nul
50:20masa sih, coba
50:22undefined, karena hoisting
50:24loh kan belum didefined
50:26dimanapun
50:28tapi kan ditarik ke atas
50:30kan istilah hoisting itu kan di
50:32variable yang dideklarasikan dibawa ke atas
50:34semua, jadi ada kayak, ada solo
50:36ada let A, let B, gitu di atasnya
50:38di paling atas, bener gak?
50:40oh kalau global
50:42itu namanya hoisting
50:44B itu undefined
50:46kalau
50:48konsolok B
50:50dia malah jadi ini, reference error
50:52reference error
50:54kalau yang A enggak
50:56apa bedanya yang A sama yang B
50:58oh iya, kayaknya A itu
51:00kalau far itu
51:02langsung masuk global ya
51:04langsung hoisting
51:06dia langsung masuk ke atas
51:08ya, dia langsung masuk ke atas
51:10tetapi belum didefinizikan
51:12tetapi tidak error
51:14itu temporal dead zone namanya
51:16oh iya itu, pernah belanja
51:18kan namanya lucu
51:20namanya kayak nama buin hotel gitu
51:22kalau konsolok B
51:24fatal error
51:26karena reference gak ada
51:28dia gak hoisting
51:30karena kalau konsolok B itu harus sesuai sama
51:32ya beneran, dibaca atas ke bawah
51:34nah nih, closure
51:36baru kita jelasin lagi
51:38double 5
51:405x2=10
51:425x2 yang tadi kan
51:44iya betul
51:46ini bukannya secara intuitif
51:48udah ngerti ya
51:50X itu akan masuk ke
51:52ke dalam fungsi yang kedua ya
51:54kalau gak tadi kita bahas
51:56mungkin gue aja bisa salah
51:58nggak sih, kelihatannya
52:00pertanyaannya bukan
52:02perkara bisa jawab
52:045x2=10 cuma harus jelasin
52:06yang penting
52:08ya itu yang tadi kita bahas itu
52:10selain cuma jawab
52:12harus bisa jelasin mas Riza
52:14iya ngerti
52:16nggak, cuma kalau ngeliat kode ini
52:18mungkin yang belum
52:20terlalu mengerti pun bisa menebak
52:22setidaknya bisa menebak bahwa
52:24X itu adalah dari atas kan
52:26tapi kan
52:28ada mosek kayak yang tadi kita bikin
52:30jelasinnya itu lo multiply
52:32dalam kurung 2, dalam kurung 3
52:34nah itu kalau yang belum tahu
52:36pensip kosur kan toh
52:38dalam kurungnya 2 sih
52:40mau dilanjut nggak nih
52:42karena udah beda topik
52:44oh dis
52:46ada pertanyaan nggak
52:48pertanyaannya bagus nih
52:50mas python, mas python nanyainya
52:52javascript
52:54iya makanya baru belajar, kan udah belajar
52:56tapi kalau udah jaga javascript
52:58ngomongannya ganti jadi javascript
53:00oh iya, python.js ya
53:02tapi bingung kapan makenya
53:04kadang-kadang kita malah kebalik
53:08kadang-kadang kita malah kebalik
53:10kita udah sering pake, tapi nggak tahu maksudnya apa
53:12iya nggak tahu istilahnya apa
53:14ini kebalik ya
53:16gimana tuh
53:18kira-kira, kapan makenya
53:20kalau butuh
53:22kalau butuh
53:24tidak menjawab ya
53:26kalau function
53:28function itu
53:30ya saat butuh di ini
53:32apa, gunanya function kan
53:34reusable
53:36dan
53:38dry, gitu
53:40dan bisa dipake
53:42bisa di reshape juga bisa
53:44dengan higher
53:46order function
53:48ya, tapi kan
53:50ini contoh doang nih function
53:52mungkin ya macem-macem pensip-pensip tadi
53:54hoisting lah, temporal date zone lah
53:56bingung kapan pakenya, maksudnya isunya
53:58kayaknya ya ini apa
54:00tanya-jawab sama LLM
54:02juga membantukan apa
54:04use case in real world
54:06saya sudah
54:08mempelajari prinsip-prinsip
54:10ini, ini, ini, tolong kasih ide
54:12apa, gimana nerapin di
54:14real world application
54:16kayaknya
54:20secara alami akan
54:22kepake
54:24kalau kita sudah
54:26sudah bikin
54:28aplikasi, sudah bikin project, sudah terjun
54:30ko project, lama-lama
54:32sering baca
54:34sering baca kode-kode
54:36dari mungkin
54:38dari repository
54:40atau ya pokoknya kode orang lah ya
54:42baik itu di perusahaan
54:44kita, perusahaan yang kita
54:46kerja di situ, atau
54:48kode open source, gitu
54:50secara tidak langsung, nanti akan
54:52terekspos lah
54:54karena kalau kita
54:56lihat dari awal, oh pokoknya saya
54:58harus pakai klosur gitu, agak susah ya
55:00karena belum tentu cocok juga use case-nya
55:02gitu
55:04tapi biasanya bakal kepake sih
55:06sebenarnya, pasti kepake kan
55:08iya, cuman nggak, nggak dipaksa
55:10harus pake itu, gitu kan
55:12bukan, nggak
55:14mungkin kita aja nggak mengerti itu namanya
55:16klosur, kita nggak
55:18itu yang paling sering dan
55:20cepat atau lambat sih bakal ketemu ya
55:22cuman kan ini kasusnya misalnya
55:24baru belajar
55:26biar nempel lah, mungkin ya, biar keinget
55:28kalau biar nempel ya
55:30sebagai salah satu contoh ya
55:32saya pakai
55:34code igniter
55:36zaman dulu ya, pakai-pake aja itu
55:38misalnya itu contohnya, itu saya pakai
55:40MVC dan
55:42selalu pakai
55:44CI apa, CI apa, gitu
55:46baru tahu, setelah belajar lebih lanjut
55:48baru tahu nama metodnya itu
55:50adalah singletone
55:52singletone, padahal saya pakai
55:54gitu, tapi nggak tahu itu namanya
55:56singletone
55:58contohnya
56:00nah, ini mau dilanjut ke
56:04teka-teki ini atau kita
56:06stay to the topic
56:08tanya jawab aja, tanya jawab
56:10ada beberapa contoh yang
56:12menarik, itu dong
56:14pertanyaan chat GPT, coba kasih contoh
56:16practical
56:18real-world project yang menggunakan
56:20carrying, eh carrying
56:22closure
56:24yang di MDN ada nih
56:26contoh-contoh yang
56:28apa,
56:30related sama dom
56:32maksudnya, nggak rusa
56:34apa, relevan buat
56:36front-end
56:38yang mana
56:40di practical
56:42OOP
56:44encapsulation
56:46JavaScript
56:48didn't have private field
56:50terus?
56:52So, biar
56:56hal-hal yang private bisa tetap
56:58didalam create bank account
57:00tanpa di expose keluar, tapi
57:02bisa
57:04bisa ngedit-ngedit
57:06segala macam dengan memanggil
57:08si apa tadi, withdraw
57:10something itu, eh create
57:12bank account
57:14create bank account itu bisa
57:16written-nya itu bisa
57:18written itu object ya
57:20bukan written function ya
57:22yang ada 3
57:24function
57:26deposit, withdraw,
57:28get balance
57:30betul, jadi yang
57:32balance-nya tadi, kalau account deposit
57:34nanti bisa
57:36100 tambah 50
57:38jadi, get balance
57:40terus nggak bisa langsung diakses
57:42karena
57:44led itu private variable
57:46private, jadi hanya bisa diakses
57:48dari dalam fungsi, kalau dari luar
57:50bisa
57:52karena far dibawah
57:54di atasnya
57:56ya, dipindah
57:58ke atas kan
58:00iya
58:02even listener that remember state
58:04setup button
58:06button add
58:08save button
58:10id color
58:12nah itu contoh
58:14oh iya, oke
58:18jadi isi color ini
58:20ke bawah ya
58:22ya, kita sering bikin
58:24debounce-debounce kan, kecuali
58:26ana underscore
58:28atau ana apa itu yang pakai
58:30underscore ya
58:32underscore kan
58:34loadash, loadash
58:36loadash, nah, loadash debounce
58:38sama loadash throttle, kecuali anak
58:40yang pakai itu kan, tapi
58:42behind the scene ya begini isinya
58:44ini kayaknya mau pakai
58:46rex, mau pakai vanilla javascript
58:48kalau bikin search input
58:50yang auto-populate
58:52itu pasti harus dibounce, kalau nggak
58:54jebol api you
58:56iya, karena dia nge-hit
58:58terus menerus ya
59:02modul petard ini
59:04ini sebelum ada
59:06is modul ya
59:08kalau kita mau
59:10reacook, nah, siapa yang sering pakai reacook
59:12nah, ini contohnya
59:14contoh real
59:16dunia nyata
59:18closure, count itu
59:22bisa dipakai di dalam fungsi
59:24handle click
59:26iya
59:28walaupun tidak
59:30dipassing
59:32sebagai variable
59:34iya kan
59:36dipassing sebagai parameter
59:38atau argument
59:40dia tetap bisa dipakai
59:42di dalam function
59:44every render, oh
59:46yang dia maksud, jadi kayak tetap
59:48function di dalam function, karena every render
59:50setiap si
59:52function component itu di render
59:54jadi membuat closure baru
59:56dari value count itu sendiri
59:58nah, yang dibalikin adalah
1:00:00set count-nya untuk
1:00:02memodifikasi value-nya count
1:00:04oh, benar
1:00:06oh, ini pertanyaannya makin banyak
1:00:12bagus-bagus, lanjut-lanjut
1:00:14iya, bagus
1:00:16kalau ada yang mau nanya, silahkan
1:00:18ini malah ditawarin bikin mini project
1:00:20demo dong
1:00:22bagian material javascript apa
1:00:24yang paling kursial untuk bisa membuat
1:00:26website yang fungsional
1:00:28maksudnya website-nya berfungsi gitu
1:00:30kita tanya jawab itu, siapa yang tau itu logo apa
1:00:32ha? logo?
1:00:34itu itu
1:00:36sama mas Hanzone L
1:00:38Biohazard
1:00:40ada gamenya
1:00:42oh, ada game ya
1:00:44apa? Fallout, Fallout
1:00:46bukan? bukan
1:00:48game di Andoin yang buat virus-virus
1:00:50bakteria, itu apalah namanya
1:00:52oh, itu
1:00:54saya tau
1:00:56iya, iya namanya apa? ngasih tebakan
1:01:00lupa, lupa, lupa
1:01:02tar, tar, tar
1:01:04bentar, bentar, tunggu, tunggu
1:01:06jawab dulu ini pertanyaannya
1:01:08tuh, ada black ink
1:01:10black ink, nah itu dia black ink
1:01:12yang punya
1:01:14yang punya yang jawab
1:01:16gak main, gak main
1:01:20bagian material javascript apa yang paling kursial?
1:01:24fungsi, variable
1:01:26gak ada satu bagian yang paling kursial sih
1:01:28ya asal basic-nya
1:01:30fundamental-nya udah
1:01:32nguasain semua, kayaknya bisa ya
1:01:34iya fundamental-nya apa aja yang dibutuhkan mungkin
1:01:36fundamental apa aja
1:01:38fungsi, variable
1:01:40looping
1:01:42ya kan? kondisional
1:01:44semua dalam algoritm modern
1:01:46pemanggramannya itu
1:01:48iya, iya
1:01:50isinya cuma
1:01:52urutan
1:01:54dari atas sampai bawah
1:01:56iya
1:01:58kondisional, looping
1:02:00udah, fungsi itu adalah
1:02:02kondisional, looping
1:02:04variable
1:02:06kondisional tadi
1:02:08udah ya, iya
1:02:10struktur data, struktur data
1:02:12struktur data, struktur data
1:02:14javascript juga
1:02:16asing, bener, bener
1:02:18asingkranus, harus dipelajari
1:02:20callback asingkranus itu penting kalau untuk javascript ya
1:02:22ini deh coba
1:02:24web.dev/learn/javascript
1:02:28kayaknya udah cukup representatif deh
1:02:30nah sambil dibuka
1:02:36wait, wait, wait
1:02:38nah coba, ini ya
1:02:42nah kan introduction, scroll ke bawah aja
1:02:44data types
1:02:48number, string boolean dan lain-lain
1:02:50boolean, null undefined
1:02:52back-end, symbol, variable
1:02:54comparison, control flow itu kan
1:02:56control flow kayak if dan else
1:02:58comparison itu
1:03:00comparison itu if dan else
1:03:02logic ya
1:03:04control flow
1:03:06sama if dan else juga, fungsi
1:03:08function
1:03:10terus ini buat OOP
1:03:12return buat function juga
1:03:14dis ini yang ya
1:03:16lumayan menyebalkan
1:03:18walaupun sekarang udah jarang dipakai juga ya
1:03:20objects
1:03:22objects, disini maksudnya objek literal
1:03:24struktur data ya
1:03:26yang pakai kurung-kurawan
1:03:28semua ya
1:03:30bukan OOP kan
1:03:32disini maksudnya kan ya
1:03:34bukan, bukan, objeknya sih
1:03:36data types ya
1:03:38struktur data
1:03:40struktur data
1:03:42jadi bukan OOP
1:03:44property, accessor
1:03:46inheritance, distribution
1:03:48itu baru OOP
1:03:50cuma kelihatan ini
1:03:52gak mendalam banget sih, cuma maksudnya kan
1:03:54harus tau prinsipnya itu apa
1:03:56kayaknya untuk bisa bikin
1:03:58aplikasi web
1:04:00atau website ya
1:04:02sampai disini
1:04:04ya udah, abisin itu
1:04:06aja sih ke bawah, maksudnya apa
1:04:08yang penting kalau pernah liat
1:04:10sekilas, soalnya ke bawah
1:04:12collection kayak array gitu
1:04:14array set ya
1:04:16ini ya, collection
1:04:18index collection ya
1:04:20terus apa ya, kayak
1:04:24class atau OOP walaupun gak ngerti
1:04:26banget mendalam kan, kalau kita
1:04:28pakai SDK external misalnya
1:04:30mau
1:04:32pakai, kalau kan suka ada new apa
1:04:34kita harus instantiate objek
1:04:36gitu kan
1:04:38new something something
1:04:40far itu
1:04:42sekarang kurang praktikal, lebih
1:04:44light aja buat define variable, iya
1:04:46sekarang udah jarang dipakai, diusahakan
1:04:48kalau bisa jangan, kecuali
1:04:50tergantung
1:04:52kalau mengerti ya bisa aja
1:04:54boleh-boleh aja
1:04:56definition variable itu
1:04:58bisa naik ke atas
1:05:00kayak tadi ya
1:05:02cuma jangan dicampur sih, sebenernya
1:05:04kalau udah pakai ES6, ada light dan cons
1:05:06itu kan, maksudnya ada itu karena
1:05:08ada behavior yang spesifik yang pengen
1:05:10diraih ya, ya itu tadi
1:05:12maksudnya gak ada hoisting, jadi
1:05:14gak bingung, pokoknya dari atas ke bawah
1:05:16kayak sacot
1:05:18kayak gitu, kalau dalam project itu
1:05:20udah pakai konvensi
1:05:22seperti itu, ya udah jangan dicampur far lagi
1:05:24sih, mendingan, kecuali pakai
1:05:26codebase lama yang emang semua
1:05:28yang lain juga pakai far, ya udah pakai far
1:05:30gak apa-apa sih, asal tahu aja
1:05:32behavior-nya, bakal
1:05:34kayak gitu
1:05:36ya
1:05:38lumayan jarang
1:05:40lihat simbol yield generator
1:05:42function di codebase production, mungkin
1:05:44saya mainnya kurang jauh
1:05:46ada unpopular fitur JS
1:05:48lain
1:05:50apa ya?
1:05:52simbol, ini simbol ya?
1:05:54simbol itu apa?
1:05:56simbol ini
1:05:58menarik, karena
1:06:00kita bisa bikin
1:06:02seperti array, tapi isinya
1:06:04yang unik, ya, bisa menggunakan
1:06:06simbol, alat bantunya
1:06:08ada contohnya gak?
1:06:10itu simbol
1:06:14dash
1:06:16mana, ini
1:06:18bukan, contoh yang
1:06:22gak ada ya, shared symbol
1:06:26gak ada yang kayak
1:06:32namanya yang dari array gitu, atau dari
1:06:34oh dari objek ya
1:06:36objek ya
1:06:38proc simbol
1:06:42apa ya, kalau yang
1:06:44kalau yang jarang
1:06:46dipakai, maksudnya jarang dipakai
1:06:48di developer land yang
1:06:50kita bikin, kita bikin dom atau
1:06:52nulis JavaScript biasa, tapi
1:06:54dipakai di framework itu
1:06:56label kali ya, baru tahu ada
1:06:58konsep label
1:07:00gara-gara spell
1:07:02gara-gara spell
1:07:04tiba-tiba ada dollar
1:07:06titik 2, oh ternyata
1:07:08fitur JavaScript
1:07:10yang namanya label
1:07:12ini unpopular sih, tidak popular
1:07:14baru dipopulerkan oleh
1:07:16spelled ya, gara-gara
1:07:18dia pakai dollar ya
1:07:20mana dia label statement
1:07:24ini ya, ini bukan?
1:07:26loop 1, loop 2
1:07:28titik 2, nah itu bisa apa aja
1:07:30cuma kalau di spelled maksudnya
1:07:32convention-nya dollar kan
1:07:34itu buat indikator reaktif
1:07:36kalau break
1:07:38kita break-nya mau kemana nih?
1:07:40procsi
1:07:42procsi ya, procsi
1:07:44weak map, weak set
1:07:46procsi juga lumayan ada beberapa kali
1:07:50muncul sih, procsi
1:07:52reflect api
1:07:56reflection, reflection
1:07:58kalau di PHP namanya reflection
1:08:00reflect
1:08:02ya reflect api
1:08:04buat apa nih?
1:08:08apa itu, nggak tahu
1:08:10buat merefleksikan
1:08:12selama ini kita hidup
1:08:14berguna buat siapa aja gitu
1:08:16forwarding behavior
1:08:20in proxy, oh ada hubungan nih sama proxy ya
1:08:22oh, proxy
1:08:24saya jarang pakai
1:08:26jadi ya
1:08:28kan pertanyaan apa aja lagi tadi yang
1:08:30yang populer
1:08:32oh ini asil pertanyaan
1:08:34chat gpt ya?
1:08:36bukan, pertanyaan penonton
1:08:38pertanyaan itu
1:08:40dioper ke chat gpt
1:08:42dioper ke chat gpt
1:08:44enak sekarang ya
1:08:46apa-apa pertanyaan chat gpt ya
1:08:48ini
1:08:50balik lagi ya ke label ya
1:08:52kayak go to ya
1:08:54balik ke mana gitu ya
1:08:56kayak basic
1:08:58ada yang ngalamin ya ke basic
1:09:00cara mengakses
1:09:02pointer berarti ya
1:09:04saya pakai ini dulu pointer
1:09:06di C++
1:09:08oh iya bisa ya
1:09:10nggak tahu
1:09:12bisa
1:09:14bisa ke mana gitu
1:09:16bisa dipaksa
1:09:18menuju ke mana gitu
1:09:20exek persilnya
1:09:22kalau yield
1:09:24sama generator ini
1:09:26dimana ya
1:09:28dipakai, terakhir
1:09:30saya ingetnya
1:09:32menggunakan yield generator itu
1:09:34pada saat menggunakan framework namanya Koa
1:09:36oh Koa itu
1:09:38js kan
1:09:40sayangannya express
1:09:42abis itu selain express tuh
1:09:44sayangannya Koa kan
1:09:46bukan sayangan, Koa itu adalah
1:09:48js nya express
1:09:50jadi mereka eksperimen dulu di Koa
1:09:52kalau berhasil udah stabil
1:09:54di push ke express
1:09:56jadi versi
1:09:58kanarinya
1:10:00disini kalau nggak salah dia pakai
1:10:04generator
1:10:06kalau nggak salah nggak kelihatannya
1:10:08yield dan generator itu
1:10:10bisa juga untuk ini sih
1:10:12mempercepat web performance
1:10:14yes
1:10:16ada execution
1:10:18sebuah function yang
1:10:20cukup lama
1:10:22dia bisa kita bisa pause dulu
1:10:24execution nya jadi
1:10:26si apa namanya
1:10:28si ENP lah ya
1:10:30jadi kayak user click itu tetap
1:10:32bisa jalan
1:10:34salah satu contohnya itu
1:10:36yang di, ntar saya kasih linknya ya
1:10:38yang game yang saya
1:10:40yang saya ini tuh, kemarin
1:10:42inget nggak? yang saya game
1:10:44saya
1:10:46saya tunjukkan
1:10:48waktu
1:10:50oh si demo nya dari Chrome
1:10:52itu ya
1:10:54ini dia
1:10:58contoh nyata
1:11:00ini Mas Liza bisa
1:11:02ini aja lah saya tunjukin
1:11:04contoh nyata ya, yang pakai
1:11:06dimana penggunaan yield itu bisa
1:11:10scheduler yield
1:11:12bahasanya
1:11:14Indra, ini nggak perlu dijawab ya
1:11:16pertanyaan paling gede
1:11:18discussion of the day tapi
1:11:20pakai itu dong, pakai sound effects
1:11:22buat dibikin sound effects
1:11:24oh iya apa ya
1:11:26oh iya boleh, jadi bukan
1:11:28java spasi script
1:11:30ini penulisannya juga udah salah ya
1:11:32java script itu
1:11:34ini contohnya
1:11:38contohnya apa namanya
1:11:40contoh nyata pakai yield
1:11:42tapi di scheduler ya
1:11:44jadi ini kan ada
1:11:46supaya animasi kan pakai
1:11:48animation frame lancar ya
1:11:50tapi begitu saya
1:11:52ini nih, saya
1:11:54taro rintangannya disini nih
1:11:56tuh, langsung stop dia
1:11:58nah sebenernya ada rintangannya nih
1:12:00jalan, lihat nggak tadi
1:12:02si, si
1:12:04ada VLC ya, ada VLC
1:12:06oh iya VLC ya tuh
1:12:08nah kalau saya enable
1:12:10dan reload
1:12:14nah kalau saya enable dan reload itu
1:12:16dia akan menggunakan scheduler yield
1:12:18jadi kalau saya klik disini
1:12:20tuh, masih patah-patah tapi kalian bisa
1:12:22lihat kan ininya
1:12:24karena ada posnya
1:12:26jadi dia tetap bisa
1:12:28ngerender
1:12:30saat proses yang
1:12:32jadi bisa
1:12:34ada proses yang
1:12:36besar, terus di yield
1:12:38sampe proses yang lain
1:12:40selesai, jadi dia bisa nunggu dan
1:12:42kembali lagi
1:12:44yieldnya itu berarti nunggu
1:12:46apa, proses yang ditreadnya
1:12:48harus selesai dulu, tapi kan
1:12:50si yieldnya nggak bisa
1:12:52iya, tapi saat request animation
1:12:54frame doang ya, ini contohnya disitu sih
1:12:56scheduler yield
1:12:58bisa, temen-temen bisa belajar
1:13:00lebih lanjut apa maksudnya scheduler
1:13:02yield itu
1:13:04macam view berarti ya
1:13:06terakhir lihat yield dan function generator
1:13:08ada di Redux Saga
1:13:10saya belum main-main Redux Saga
1:13:12kurang jauh saya main
1:13:14kurang jauh
1:13:16ya mungkin juga sih
1:13:22bisa jadi, bisa jadi
1:13:24sebentar
1:13:26nah kan bener
1:13:30kalau
1:13:32kalau dicari
1:13:34ini
1:13:36QJS itu pakai generator
1:13:38contohnya ada di
1:13:40mana dia
1:13:42ini, dia pakai fungsi generator
1:13:44oh jadi bintangnya
1:13:46itu ya generator
1:13:48iya
1:13:50setiap generator harus ada yieldnya
1:13:52iya
1:13:54dia seolah-olah return itu
1:13:56return dari generator itu
1:13:58adalah yield seolah-olah ya
1:14:00kayak asing
1:14:02dan await
1:14:04await, asing-await
1:14:06asing-await, asing-await
1:14:08nah generator ini justru
1:14:10populernya itu sebelum asing-await
1:14:12begitu asing-await orang dah ini
1:14:14cuman bedanya adalah
1:14:18kalau asing-await
1:14:20kan
1:14:22gimana ya, kalau
1:14:26generator dia bisa kita
1:14:28request
1:14:30saya mau next value
1:14:32dong, gitu
1:14:34baru dikasih
1:14:36iya maksudnya by request kan
1:14:38by request ya
1:14:40by request
1:14:42jadi kalau nggak dipanggil ya dia diam aja
1:14:44iya, dia nggak
1:14:46return apa-apa sebelum dipanggil
1:14:48bingung kan
1:14:52tambah bingung kan
1:14:54bingung
1:14:56makin lama makin bingung
1:14:58contoh
1:15:00misalkan
1:15:02ada four di dalam
1:15:04function, ada sebanyak
1:15:063 kali ya, 0-2 ya
1:15:080-2 berarti 3 kan ya
1:15:10nah, pada saat kita panggil sum
1:15:12ini, kalau kita konsolok sum
1:15:14dia nggak akan return hasilnya
1:15:16tapi kalau kita sum.next
1:15:18dia akan panggil pertama kali adalah
1:15:203 ditambah
1:15:225, 8
1:15:24selesainya belum
1:15:26ya, next lagi
1:15:28berarti untuk nilai yang kedua
1:15:30yaitu 5 ditambah
1:15:321
1:15:34eh, bener nggak
1:15:36eh, bukan i ya
1:15:38a ya, a ditambah
1:15:40r, r itu apa, r itu 3
1:15:425 ditambah 3, ditambah
1:15:463 lagi ya
1:15:52yang kedua itu gimana
1:15:548 tambah 3 kan
1:15:568 tambah 3, bener
1:15:58ya itu
1:16:00nama tambah 3 doang
1:16:02terus abis itu
1:16:04next lagi
1:16:0614
1:16:08udah selesai belum
1:16:10masih jalan nih
1:16:124 nya, begitu yang keempat
1:16:14looping nya 3 kali
1:16:16nah
1:16:18ketika yang keempat baru
1:16:20value nya nggak ada
1:16:22tapi selesai
1:16:24ini kayak stream ya
1:16:26stream juga gitu kan
1:16:30ada kapan selesainya kan
1:16:32kita dikasih tau ya
1:16:34cuma ini
1:16:36based on loop
1:16:38yang kita define sendiri
1:16:40di dalam generator nya
1:16:42kalau stream kan
1:16:44isi data
1:16:50bisa begitu
1:16:52iya
1:16:54ayo, apa lagi
1:16:56wah, nur holit, halo nur holit
1:16:58terima kasih
1:17:02jadi member
1:17:04eh, udah nih, habis nih
1:17:06kita ujian dulu
1:17:10mau nggak? apa?
1:17:12ujian apa? nggak, nggak mau
1:17:14pertanyaannya sih
1:17:16sensitivity
1:17:18ujian yang tadi
1:17:20iya
1:17:22nggak mau
1:17:26nggak mau, nggak, daripada itu
1:17:28mendingan kita pilih
1:17:30topik buat minggu depan
1:17:32eh kita belum bahas hoisting, atau
1:17:34closer aja, udah kan tadi
1:17:36udah kan, cuma
1:17:38hoisting belum
1:17:40dikit doang, hoisting
1:17:42ya dikit doang, ya sudah lah, next time aja
1:17:44udah sejam sih, udah sejam sih ya
1:17:46japet ya
1:17:48oke, sebelum mudahan
1:17:50kita diskusi topik
1:17:52dulu ya, temen-temen pengen
1:17:54minggu depan topik apa
1:17:56boleh di chat juga boleh
1:17:58sebelum kita voting
1:18:00atau kita veto
1:18:02munculin dulu lah link
1:18:04github discussion nya
1:18:06kalau ada yang tidak ada
1:18:08di github juga boleh
1:18:10dokumentasi, kalah mulu
1:18:12dokumentasi, nggak ada yang mau bikin dokumentasi ya
1:18:14temen-temen sekarang ya
1:18:16pake AI lah
1:18:18sekarang semua
1:18:20pake AI ya
1:18:22ini Nurkholid nih
1:18:26nanyain Http1, VS Http2
1:18:28VS Http3
1:18:30kayaknya pernah disinggung deh
1:18:38Http1
1:18:40udah sih, iya udah
1:18:42iya
1:18:44ingat nggak yang Http3
1:18:46gue sebutnya kayak yang
1:18:48yang kalau kita naik kereta
1:18:50kereta api cepat
1:18:52ada 2 menara
1:18:54yang kita lagi pake HP
1:18:56jadi
1:18:58kalau kita pakenya TCP
1:19:00itu akan
1:19:02ilang dulu, ngedrop dulu
1:19:04iya, ngedrop
1:19:06dissolve dengan pake Http3
1:19:10UDP
1:19:12UDP ya
1:19:14wah nggak ada yang mau
1:19:18topik, topik, ada yang mau
1:19:20sombong topik nggak?
1:19:22nah itu mau hak veto
1:19:24katanya ya, hak veto
1:19:26mau hak veto, hak veto apa?
1:19:28signal, mau bahas signal, saya penasaran sama signal sih
1:19:30boleh
1:19:32signal-signal boi, signal boi
1:19:34cuma kita semua pasti nggak ada yang tau
1:19:36tentang signal kan? iya ya
1:19:38nggak ini ya
1:19:40beda situs-beda situs
1:19:42signal Javascript maksudnya
1:19:44iya kan ini yang
1:19:46awalnya kan
1:19:48SolidJS
1:19:50solid ada signal, angular ada signal
1:19:52diimplementasi
1:19:54sama yang lain
1:19:56terus sekarang Javascript udah
1:19:58mulai memasukkan signal
1:20:00sebagai API-nya
1:20:02proposal atau statusnya
1:20:04jadi penasaran
1:20:06pengen tau cara kerjanya aja
1:20:08ya boleh deh biar kepaksa belajar
1:20:10ini juga
1:20:12klosur kepaksa apa
1:20:14nggak kepaksa belajar sih, dulu pernah belajar
1:20:16terus lupa lagi
1:20:18cuma gara-gara bahas ini jadi
1:20:20inget lagi, yaudah signal biar kita
1:20:22belajar loh
1:20:24kalau nggak salah
1:20:26kalah lagi dokumentasi
1:20:28kalau nggak salah
1:20:30spelt yang baru
1:20:32yang run itu juga
1:20:34menggunakan signal ya
1:20:36gas signal
1:20:38yang run
1:20:40rendering reactivity paradigm
1:20:42signal observable
1:20:44ya observable yang jaman dulu ya
1:20:46yang RxJS
1:20:48RxJS
1:20:50masih ada reactivity
1:20:52masih lah
1:20:54ada ada, dianggular ada
1:20:56silin yang
1:20:58promotin
1:21:00ini masih perlu
1:21:02masih perlu
1:21:04voting
1:21:06voting apa gas, gas aja ya
1:21:08gas ya
1:21:10signal
1:21:12akan dibahas
1:21:14minggu depan
1:21:16nggak ada
1:21:18minggunya disini
1:21:20tanggal berapa tuh
1:21:2226+7
1:21:2433
1:21:26tanggal 33 Agustus
1:21:302 September
1:21:322 September
1:21:342025
1:21:36oke
1:21:40cukup cukup
1:21:42sepertinya kita sudah lelah
1:21:44siapa signal belajarnya pake
1:21:46GVT atau sejenisnya
1:21:48atau Jemenai deh
1:21:50Jemenai, iya tanya kalau lagi perlu
1:21:52on demand aja
1:21:54tapi belum pernah belajar yang sampai
1:21:56kayak terstruktur banget
1:21:58pengen belajar apa ya
1:22:00bikin AI agent dari awal
1:22:02yang bikin curriculum gitu
1:22:04belum pernah nyoba
1:22:06padahal sekarang harusnya udah bisa kan
1:22:08ya belum sempet
1:22:10nggak sampai sejauh, cuma saya sering pake ini
1:22:12kayak untuk nanya-nanya hal dasar
1:22:14tapi banyak membantu loh kalau nanya-nanya
1:22:16sangat membantu ya
1:22:18sama kasih contoh
1:22:20contoh B
1:22:22contoh C ya kayak tadi
1:22:24yang bisa disebut klosur mana
1:22:26sih kalau nggak ada inner functionnya
1:22:28disebut klosur, kalau bisa mana
1:22:30contohnya dan apa ya
1:22:32demonstrate mana variable yang
1:22:34bisa diakses misalnya ya lebih ke
1:22:36kalau cuma definisi kan sebenarnya
1:22:38Google biasa bisa ya, cuma kalau buat
1:22:40probing, buat explore
1:22:42prinsip-prinsipnya itu berguna banget
1:22:44sih
1:22:46nah iya persis itu tuh
1:22:48kayak komennya Mas Willa persis
1:22:50teman diskusi
1:22:52teman diskusi betul
1:22:54iya
1:22:56tetap harus
1:22:58di cek juga kebenarannya ya
1:23:00jangan langsung percaya ya
1:23:02bahaya, kadang-kadang
1:23:04suka halu, apalagi konsep-konsep
1:23:06yang baru ya mungkin dia nggak tahu
1:23:08karena dia nggak mungkin jawab saya tidak tahu
1:23:10oh bisa
1:23:12bisa dipaksa
1:23:14di sistem instruksi
1:23:16oh jadi kalau nggak tahu
1:23:18bilang nggak tahu gitu ya
1:23:20terus selalu
1:23:22misalnya ada sumber banyak
1:23:24dan berbeda-beda include link-nya
1:23:26ya biar maksudnya biar kita
1:23:28bisa investigate sendiri
1:23:30tapi kadang-kadang link-nya juga nggak
1:23:32bisa karena dia halu aja dia bikin-bikin
1:23:34sendiri kadang-kadang ya
1:23:36sekarang udah ada mendingan sih
1:23:38udah mendingan ya
1:23:40udah nggak ngarang link ya
1:23:42kalau halu udah nggak mungkin
1:23:44diilangin, cuma
1:23:46kalau dulu tuh parah banget ngarang link-nya
1:23:48ya minimal
1:23:50sekarang udah mendingan ya
1:23:52ada yang pernah
1:23:56nanya AI
1:23:58kok pas plus komen-komennya
1:24:00ada, ada, ada
1:24:02ada
1:24:06iya, ada
1:24:08kan pernah ada yang
1:24:12nggak tahu ya ini benar atau nggak ya
1:24:14karena kan itu bisa dimanipulasi juga ya
1:24:16ada yang
1:24:18screenshot
1:24:20skripsi
1:24:22yang ada tulisannya ini apa
1:24:24text ini digenerate oleh ini
1:24:26of course here is the
1:24:28yang ada awalannya gitu loh
1:24:30tentu
1:24:32ini lah jawaban untuk blablabla
1:24:34atau kadang
1:24:36yang sering gue lihat itu bukan coding sih
1:24:38bukan decoding, cuma apa review
1:24:40Google Map kan suka ada kan yang kayak joki
1:24:42buat apa
1:24:44ningkatin review bisnis di Google Maps
1:24:46itu kayak auto generated
1:24:48jadi suka place name, tau kan
1:24:50ada square bracket misalnya generate
1:24:52positive review about coffee shop
1:24:54nah terus ada square bracket
1:24:56coffee shop name, itunya nggak diganti
1:24:58sama nama tempatnya
1:25:00iya, iya, iya, iya, oke, oke
1:25:06oke kalau gitu cukup ya temen-temen
1:25:08terima kasih banyak buat
1:25:10semua interaksi dan komentarnya
1:25:12kita ketemu lagi minggu
1:25:14depan, mudah-mudahan
1:25:16yang kita bahas malam ini tidak
1:25:18tambah bingung, tapi tambah jelas
1:25:20semoga berguna, kita besok-besok
1:25:22inteku, kerjaan
1:25:24inget episode ini ya kan
1:25:26inget kita, ya inget kita
1:25:28terus ceritain
1:25:30inget kontennya tadi
1:25:32inget kontennya, terus
1:25:34ceritakan
1:25:36saya ditanya tentang closure
1:25:38terus saya jawab, terus jawabannya salah
1:25:42tapi kalau jawabannya salah kita yang salah berarti ya
1:25:44apa tuh
1:25:46sebelum tutup, kita kan
1:25:48pernah mau bikin ini tuh
1:25:50bikin, apa tuh
1:25:52episode halloween
1:25:54sudah mau halloween dulu, oh iya, satu suro
1:25:56kan ini
1:25:58episode satu, ya kan
1:26:00cerita horror kan
1:26:02cerita horror, cerita horror ya
1:26:04jadi kita kan harus mulai
1:26:06kumpulin, bikin
1:26:08guitar discussion, kita sebar-sebar dan kita mulai
1:26:10promoin tiap episode, ada, ada
1:26:12kayaknya di, ini ada deh
1:26:14cuma kayaknya kita harus nyediain
1:26:18kita nyediain mailbox
1:26:20atau semacamnya lah, kalau misalnya
1:26:22google form, apa google form aja
1:26:24google form yang sederhana, jadi gak perlu login
1:26:26ya boleh, ya boleh lah
1:26:28ok, udah mulai kita
1:26:30promote aja, jadi kalau temen-temen ada
1:26:32cerita horror, nanti kita bacain
1:26:34ya cerita horror saat
1:26:36dikerjaan, jadi ini bukan
1:26:38cerita horror
1:26:40cerita horror beneran
1:26:42cerita horror, saya delet
1:26:44production database
1:26:46itu paling sering tuh
1:26:48apalagi dunia file coding
1:26:52iya, yang berhubung dengan AI
1:26:54tiba-tiba kodenya dihapus gitu kan
1:26:56ada full request otomatis
1:26:58dimana gitu kan, ya yang horror-horor
1:27:00atau diberikan IPI key-nya
1:27:02ke link
1:27:04atau jadi .env
1:27:06kita mengerikan
1:27:08cerita seram
1:27:10.env-nya kepus ke production
1:27:12eh kepus ke repo
1:27:14node modulesnya kepus ke repo itu udah biasa ya
1:27:16zaman dulu yahoo pernah private key-nya
1:27:20di expose
1:27:22itu kan horror ya
1:27:24horror-horor, yang horror-horor lah ya
1:27:26apa, API key, open AI
1:27:30kepus ke repo, terus
1:27:32dipake, di abuse ya
1:27:34ngeri banget tuh
1:27:36tagihan
1:27:38iya, tagihan juga termasuk ya
1:27:40misalkan, pakai salah satu cloud
1:27:42tiba-tiba
1:27:44itu juga horror sih
1:27:46iya, jadi inget, saya punya horror di situ
1:27:50nanti saya ceritain
1:27:52iya, horror tagihan
1:27:54wah, saya juga ada tuh
1:27:56pengalaman
1:27:58horror tagihan
1:28:00hahaha
1:28:02belum kita belajarnya
1:28:04on the spot ya
1:28:06halloween itu tanggal berapa sih
1:28:08kita satu suruh ya
1:28:10satu suruh berapa
1:28:12tanggal berapa, gak tau
1:28:14kalau halloween itu kan 31 oktober
1:28:16satu suruh, tanggal berapa ya
1:28:18tanggal satu suruh
1:28:2015 juni, 16 juni
1:28:22udah lewat
1:28:24yaudah, ikut aja ya
1:28:2631 oktober
1:28:28yang paling dekat
1:28:30selasa klion, gak ada
1:28:32selasa klion
1:28:34hah?
1:28:36kan biasanya jumat klion
1:28:38karena acara kita selasa, jadi selasa klion
1:28:40selalu selasa malam
1:28:42ya pasti ada sih, cuma
1:28:44gak serem, gak ada konutasi
1:28:4631 oktober itu pas hari jumat
1:28:48paling tanggal 28 oktobernya aja
1:28:50kita main
1:28:52pokoknya kalau udah ada cerita
1:28:54yang di submit, kita inilah
1:28:56kita mau itu halloween
1:28:58atau gak, pokoknya
1:29:00pokoknya cerita horror
1:29:02kita pakai kostum gak
1:29:04gak usah ya
1:29:06kostum serem
1:29:08kostum serem misalnya
1:29:10apalah
1:29:12surat
1:29:14I delete database
1:29:16and production
1:29:18itu salah satu
1:29:22apa namanya
1:29:24salah satu cara untuk menjadi
1:29:26senior developer
1:29:28kalau belum database production
1:29:30belum jadi senior
1:29:32saya delete gak sih, ngedrop juga gak
1:29:34cuma update lupa aware aja
1:29:36itu pernah
1:29:38ok?
1:29:44cukup?
1:29:46ditunggu ya cerita horrornya ya
1:29:48cerita horror, dan mungkin
1:29:50sekarang sudah lucu ya, kalau dulu
1:29:52beneran horror
1:29:54dulu nangis
1:29:56nangis sampai setengah malam
1:29:58panik
1:30:00oke, kita ketemu lagi
1:30:02minggu depan dengan topik
1:30:04horror beda, selamat malam, sampai jumpa
1:30:06bye bye
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
29 Jul 2025
Konsep Dependency Injection - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini waktunya ngulik fundamental membahas konsep Dependency Injection. ...
20 Jan 2026
Agentic AI - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Bareng Eka dan Ivan kita akan membahas tentang Agentic UI. Apa itu agent, a...
10 Sep 2025
Ngobrolin Dokumentasi - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Mari membahas tentang berbagai alat untuk membuat dan menampilkan dokumentas...