JavaScript sudah berjalan di browser Anda di komputer, di tablet, dan di ponsel cerdas Anda Show
JavaScript bebas digunakan untuk semua orang Pembelajaran sayaLacak kemajuan Anda dengan program "Pembelajaran Saya" gratis di W3Schools Masuk ke akun Anda, dan mulai dapatkan poin Ini adalah fitur opsional. Anda dapat mempelajari W3Schools tanpa menggunakan My Learning Referensi JavaScriptW3Schools mengelola referensi JavaScript lengkap, termasuk semua objek HTML dan browser Referensi berisi contoh untuk semua properti, metode, dan peristiwa, dan terus diperbarui sesuai dengan standar web terbaru Saya telah dengan hati-hati memeriksa lebih dari 50 sumber daya, saya telah melalui 10 wawancara JavaScript, dan saya telah mendapatkan pekerjaan di startup unicorn Dan selama seluruh proses ini, saya mulai melihat pola dalam pertanyaan wawancara JS yang paling sering diajukan Pada artikel ini, saya telah mencoba membuat daftar konsep yang akan mencakup 80% dari setiap wawancara JS yang bagus Jadi, jika Anda sedang mempersiapkan wawancara JS berikutnya, ini adalah lembar contekan yang sempurna bagi Anda untuk meninjau dan memperkuat keterampilan Anda. Lakukan ini dan Anda akan siap untuk bergoyang. 💃 📝Prasyarat
Daftar Isi 📜
Peringatan. Fokus di sini sebagian besar adalah mencakup konsep-konsep yang relevan dengan wawancara dan bukan membuat buklet komprehensif untuk mempelajari bahasa. Perlakukan ini lebih seperti lembar contekan Jika Anda ingin mempelajari lebih dalam dan mempelajari lebih lanjut konsep JS, lihat kurikulum freeCodeCamp Dengan itu menyingkir - ayo pergi Dasar-Dasar JavaScript 👶Mari kita mulai dengan beberapa konsep dasar yang perlu diketahui oleh setiap pengembang JS Variabel dalam JavaScript 📥Variabel adalah blok bangunan dari setiap bahasa pemrograman. Anda menggunakannya untuk menyimpan nilai. Variabel dapat berupa angka, string, dan banyak jenis lainnya Sekarang, JS adalah bahasa yang diketik secara longgar. Anda tidak perlu menyatakan jenis variabel. Anda bisa mendeklarasikannya, dan JS akan mengetahuinya sendiri Sekarang, dalam JavaScript kita memiliki 3 cara untuk mendeklarasikan variabel. 9, 0, dan 1Inilah perbedaan utamanya Mari kita coba memahaminya melalui contoh Kami akan membahas ruang lingkup nanti. Untuk saat ini, mari kita fokus pada perbedaan lainnya
Catatan. Dalam JavaScript, menempatkan titik koma setelah akhir pernyataan adalah opsional. Saya akan melewatkannya di sini demi keterbacaan == vs === dalam JavaScriptMari kita bandingkan beberapa variabel. Ada dua cara untuk melakukannya _2 hanya memeriksa nilainya _3 memeriksa nilai + tipe _Array dalam JavaScriptSekarang setelah kita mengetahui sedikit tentang variabel, mari beralih ke array dan metode array Jika kita telah mendeklarasikan banyak variabel, masuk akal untuk menyimpannya di suatu tempat. Kalau tidak, akan sulit untuk melacak semuanya. Array adalah salah satu cara menyimpan variabel
Tapi hanya menyimpan variabel dalam array agak membosankan. Kita dapat melakukan lebih banyak hal dengan array ini (seperti mengakses variabel-variabel ini atau mengubah urutan penyimpanannya atau cara penyimpanannya) Untuk itu, JS memiliki banyak metode. Mari kita lihat beberapa di antaranya sekarang Metode Larik JavaScript 🧰Metode array yang paling sering digunakan di JS adalah. 4, 5, 6, 7, dan 8Mari kita bahas 4, 5, dan 8. Anda dapat menjelajahi lebih lanjut di artikel bermanfaat iniMetode larik // Return the words with more than 6 letters const words = ['react', 'script', 'interview', 'style', 'javascript'] const ans = words.filter((word) => word.length > 6) console.log(ans) // ['interview', 'javascript'] 4 _4 membuat salinan baru dari array asli. Kami menggunakannya ketika kami ingin melakukan sesuatu dengan elemen-elemen dari array asli tetapi tidak ingin mengubahnya 4 mengulangi array asli dan mengambil fungsi callback (yang akan kita bahas nanti) sebagai argumen. Dalam fungsi panggilan balik, kami memberi tahu apa yang harus dilakukan dengan elemen
Metode larik // Return the words with more than 6 letters const words = ['react', 'script', 'interview', 'style', 'javascript'] const ans = words.filter((word) => word.length > 6) console.log(ans) // ['interview', 'javascript'] 5 _5 membuat array baru dengan elemen yang memenuhi kondisi yang diberikanMari kita lihat sebuah contoh. Saya telah menggunakan fungsi panah di sini. Jika Anda sedikit tidak nyaman dengan fungsi, Anda dapat membahas bagian berikutnya terlebih dahulu dan kembali lagi _Cobalah untuk melakukan latihan sendiri terlebih dahulu untuk menguji pengetahuan Anda. Jika Anda menemukan solusi yang berbeda atau lebih baik, beri tahu saya Secara umum, tindak lanjut untuk ini. dapatkah Anda melakukannya tanpa metode array?
Metode larik // Return the words with more than 6 letters const words = ['react', 'script', 'interview', 'style', 'javascript'] const ans = words.filter((word) => word.length > 6) console.log(ans) // ['interview', 'javascript'] 8 _8 sangat mirip dengan 4 tetapi memiliki dua perbedaan utamaPertama-tama, _4 mengembalikan Array baru, tetapi 8 tidak
Dan kedua, Anda dapat melakukan metode chaining di 4 tetapi tidak di 8
Catatan. 4 dan 8 tidak bermutasi (mengubah) array asliPemrograman Fungsional dalam JavaScript 🛠Kami telah menggunakan fungsi di atas. Mari kita bahas lebih detail sekarang Sama seperti bagaimana kita menggunakan variabel untuk menyimpan nilai, kita dapat menggunakan fungsi untuk menyimpan potongan kode yang dapat kita gunakan kembali Anda dapat membuat fungsi dengan dua cara
Sekarang, mari kita membahas beberapa konsep penting yang berkaitan dengan fungsi Cakupan Fungsi dalam JavaScript 🕵️Lingkup menentukan dari mana variabel dapat diakses Ada tiga jenis ruang lingkup
Ingat dari sebelumnya bahwa _9 adalah cakupan global sedangkan 0 dan 1 adalah cakupan blok. Mari kita pahami itu sekarang _0Penutupan dalam JavaScript (❗penting) 🔒Kami telah menggunakan penutupan tanpa menyadarinya. Pada contoh di bawah ini, 9 adalah variabel tertutup _1Bagian ini akan memiliki banyak kata-kata mewah, jadi bersabarlah. Kami akan membahasnya satu per satu kata MDN
Oke, apa itu lingkungan leksikal? Ini pada dasarnya adalah keadaan sekitar – memori lokal bersama dengan lingkungan leksikal induknya Apa? . Mari kita pahami dengan contoh sederhana _2Ketika x dipanggil, y dikembalikan. Sekarang, y sedang menunggu untuk dieksekusi. Seperti senjata yang dimuat menunggu untuk ditembakkan. 🔫 Jadi, ketika kita akhirnya memanggil z, y dipanggil. Sekarang, Anda harus mencatat 0 jadi pertama kali mencoba menemukan 🔍 di memori lokal tetapi tidak ada. Ia pergi ke fungsi induknya. Ia menemukan _0 di sanaVoila. Itu dia - ini adalah penutupan Bahkan ketika fungsi dikembalikan (dalam kasus di atas y) mereka masih mengingat ruang lingkup leksikalnya (dari mana asalnya) Kutipan yang sama sekali tidak terkait untuk iseng 👻
Saya bersumpah artikel lainnya sah 🤞 Teruslah membaca Keuntungan Penutupan di JavaScript 😎
_3
Misalkan Anda ingin membuat aplikasi counter. Setiap kali Anda memanggilnya, hitungannya bertambah 1. Tetapi Anda tidak ingin mengekspos variabel di luar fungsi. Bagaimana cara melakukannya? Anda dapat menebaknya - penutupan _4Jangan khawatir tentang _2 dan 3. Kami memiliki seluruh bagian yang dikhususkan untuk mereka di bawahKerugian Penutupan di JavaScript 😅
Misalnya, variabel tertutup tidak akan dikumpulkan dari sampah. Ini karena, meskipun fungsi luar telah berjalan, fungsi dalam yang dikembalikan masih memiliki referensi ke variabel tertutup Catatan. Pengumpulan sampah pada dasarnya menghapus variabel yang tidak terpakai dari memori secara otomatis Mengangkat dalam JavaScript 🚩Ini adalah perilaku default JavaScript untuk memindahkan deklarasi ke bagian atas program
Mari kita lihat sebuah contoh _5Fiuh. Saya sudah selesai dengan fungsi di sini, tetapi jika Anda ingin lebih banyak, lihat pembicaraan luar biasa ini oleh Anjana Vakil tentang pemrograman fungsional Objek dalam JavaScript 🔮Sama seperti array, objek adalah cara menyimpan data. Kami melakukannya dengan bantuan key-value pair _6 9 adalah 0 dan 1 adalah 2. Kunci umumnya adalah nama properti objekKita dapat menyimpan semua jenis data seperti fungsi di dalam objek. Anda dapat menjelajahi lebih lanjut di sini di MDN Apa itu function consoleEven(arr) { let data = arr.forEach((num) => (num % 2 === 0 ? num * 2 : num * 1)) console.log(data) // undefined } consoleEven(arr) _2 dalam JavaScript?Sekarang, bekerja dengan objek berbeda di JS daripada di bahasa pemrograman populer lainnya seperti C++. Dan untuk memahaminya dengan benar, kita perlu memahami kata kunci 2 dengan baikMari kita coba memahaminya langkah demi langkah Dalam sebuah program, terkadang kita membutuhkan cara untuk menunjukkan sesuatu. Seperti mengatakan fungsi ini di sini milik objek ini. 2 membantu kita mendapatkan konteks iniAnda akan mengerti apa yang saya katakan dengan lebih baik ketika kita melihat beberapa contoh Untuk saat ini, pikirkan _2 sebagai sesuatu yang menyediakan konteks. Dan ingat hal penting ini. nilainya tergantung pada bagaimana dan di mana itu disebutSaya tahu saya tahu. Banyak _2 😬. Mari kita bahas semua ini perlahanMulai program baru dan cukup masuk 2 _7Ini akan menunjuk ke objek jendela Sekarang, mari kita ambil contoh dengan sebuah objek _8Sekarang, _2 akan menunjuk ke objek. Jadi apa yang terjadi di sini?Pada contoh pertama, kita tidak memiliki apa-apa lagi dari 0 sehingga defaultnya adalah objek 1. Namun dalam contoh ini, kita memiliki objek 2Jika kamu melakukan _9Kami kembali mendapatkan objek _1. Jadi, kita dapat melihat bahwa nilai 2 bergantung pada bagaimana dan di mana kita melakukan pemanggilanApa yang baru saja kita lakukan di atas disebut Implicit Binding. Nilai _2 terikat pada objekAda cara lain untuk menggunakan 2. Pengikatan eksplisit adalah saat Anda memaksa suatu fungsi untuk menggunakan objek tertentu sebagai 2Mari kita pahami mengapa kita membutuhkan pengikatan eksplisit melalui sebuah contoh 0Kami menggunakan _2 dengan benar, tetapi bisakah Anda melihat masalah dengan kode di atas?Kami mengulangi kode. Dan salah satu prinsip pemrograman yang baik adalah menjaga agar kode Anda tetap KERING. (Jangan Ulangi Sendiri) Jadi, mari kita singkirkan _9 dan lakukan saja 1 _00 memaksa 01 untuk menggunakan objek kedua sebagai 2Ada banyak cara lain yang bisa kita lakukan Cobalah untuk menyelesaikan sendiri masalah yang diberikan 2Terakhir, ingat bahwa saya mengatakan bahwa ada perbedaan antara panah dan fungsi biasa Kasus _2 adalah salah satunyaUntuk fungsi panah, nilainya bergantung pada lingkup leksikal – artinya, fungsi luar tempat fungsi panah dideklarasikan Jadi, jika kita menjadikan 04 dari atas sebagai fungsi panah, tidak ada yang berhasilFungsi panah pada dasarnya mewarisi konteks induk yang dalam kasus di atas adalah 1Prototipe dan Warisan Prototipe dalam JavaScript 👪
Semua ini datang melalui _06 _07 adalah objek tempat JS meletakkan semuanyaMari kita lihat beberapa contoh. Jalankan konsol Anda 3Semua ini disebut _08Kita bisa melakukan hal yang sama dengan objek dan fungsi juga Kami akan selalu menemukan _09 di belakang layar. Itu sebabnya Anda mungkin pernah mendengar bahwa semua yang ada di JS adalah objek. 🤯Apa itu Warisan Prototypal dalam JavaScript? 4Catatan. Jangan memodifikasi prototipe dengan cara ini. Itu hanya untuk pengertian. Inilah cara yang tepat untuk melakukannya 5Dengan melakukan ini, _10 mendapatkan akses ke properti objek. Jadi, sekarang kita bisa melakukannya 6Ini adalah warisan prototipe JavaScript asinkron ⚡Jadi, JS adalah bahasa single-threaded. Hal-hal terjadi satu per satu. Hanya setelah satu hal selesai, kita dapat pindah ke hal berikutnya Tapi ini menimbulkan masalah di dunia nyata, terutama saat kita bekerja dengan browser Misalnya, saat kita perlu mengambil data dari web - seringkali kita tidak tahu berapa lama waktu yang dibutuhkan untuk mendapatkannya. Dan apakah kita akan bisa mendapatkan data dengan sukses Untuk membantu hal ini, JS asinkron berperan Dan konsep yang paling penting untuk dipahami adalah event loop Loop Acara di JavaScript ➰Alih-alih memberikan penjelasan setengah matang di sini, saya sangat menyarankan untuk menonton video Philip Roberts ini jika Anda belum melakukannya Pelajari semua tentang loop acara di JS di sini Timer dalam JavaScript – setTimeout, setInterval, clearInterval ⏱️Saya harap Anda menonton videonya. Itu menyebutkan pengatur waktu. Mari kita bicarakan lebih banyak tentang mereka sekarang. Ini sangat sering ditanyakan dalam wawancara Metode 11 memanggil fungsi atau mengevaluasi ekspresi setelah sejumlah milidetik yang ditentukan _12 melakukan hal yang sama untuk interval tertentu 7Anda menggunakan _13 untuk menghentikan timer _8Mari kita membahas beberapa pertanyaan yang menggunakan konsep-konsep ini _9Ini yang sedikit lebih rumit 0Dan inilah penjelasan singkat tentang apa yang terjadi di sana. ketika _14 muncul lagi ke dalam gambar, seluruh loop telah berjalan dan nilai 15 telah menjadi 6,Sekarang, katakanlah kita ingin hasilnya menjadi 1 2 3 4 5 – apa yang kita lakukan? Alih-alih _9 ➡️ gunakan 0Mengapa ini akan berhasil? _9 memiliki cakupan global tetapi 0 memiliki cakupan lokal. Jadi untuk _0 15 baru dibuat untuk setiap iterasiJanji dalam JavaScript (❗penting) 🤝Janji adalah inti dari Asynchronous JS
Janji bisa berada di salah satu dari tiga kondisi ini
_1Catatan. _22 dan 23 hanyalah nama konvensional. Sebut saja pizza🍕 jika Anda sukaAlih-alih _24, kita juga dapat menggunakan 25 _2Salah satu keuntungan dari promise adalah sintaksnya jauh lebih bersih. Sebelum kami memiliki janji, kami dapat dengan mudah terjebak di callback hell 🌋 Konsep JavaScript Tingkat Lanjut untuk Diketahui📚 Polyfill dalam JavaScript
_3Perhatikan bagaimana kami menggunakan _2. Di sini, pada dasarnya kami telah membuat larik baru dan menambahkan nilai ke dalamnyaAsync dan tunda dalam JavaScript ✔️Konsep ini sering ditanyakan dalam wawancara oleh perusahaan besar seperti Amazon, Walmart, dan Flipkart. 🏢 Untuk memahami _28 dan 29, kita perlu memiliki gagasan tentang bagaimana browser merender halaman web. Pertama, mereka mengurai HTML dan CSS. Kemudian pohon DOM dibuat. Dari sini, pohon render dibuat. Terakhir, dari pohon render - tata letak dibuat dan lukisan terjadiUntuk tampilan lebih detail, lihat video ini Async dan defer adalah atribut _30 yang dapat dimuat bersama dengan tag skrip. Mereka berguna untuk memuat skrip eksternal ke halaman web AndaMari kita pahami dengan bantuan gambar Jika ada beberapa skrip yang saling bergantung satu sama lain, gunakan 29. Skrip tunda dijalankan sesuai urutan yang ditentukanJika Anda ingin memuat skrip eksternal yang tidak bergantung pada eksekusi skrip lain, gunakan 28Catatan. Atribut async tidak menjamin urutan eksekusi skrip Debouncing dalam JavaScript ⛹️♂️Debouncing adalah topik favorit pewawancara lainnya Mari kita pahami dengan membuat bilah pencarian Demo. https. //codesandbox. io/s/debounce-input-field-o5gml Buat kolom input sederhana di 33 seperti ini _4Sekarang, di _34. Jangan lupa untuk menambahkannya ke 33 terlebih dahulu 5Pertama, kami telah memilih input dan menambahkan ________6______36 ke dalamnya. Kemudian kami membuat fungsi debounce yang menggunakan fungsi panggilan balik dan penundaan Sekarang, di dalam fungsi debounce kita membuat timer menggunakan 14. Sekarang, tugas pengatur waktu ini adalah memastikan bahwa panggilan berikutnya untuk ________6______38 hanya terjadi setelah 300 ms. Demikianlah apa yang dimaksud dengan debouncingSelain itu, kami menggunakan _39 untuk menghapusnya. Tidak ingin terlalu banyak dari mereka yang nongkrong di sana menghabiskan ruang memoriFiuh. Banyak teori. Mari kita lakukan tantangan yang menyenangkan. Anda pasti sudah melihat hitungan mundur sebelum permainan dimulai (seperti 10, 9, 8,. dengan beberapa penundaan di antaranya). Cobalah untuk menulis sebuah program untuk itu Inilah cara Anda melakukannya _6Apakah Anda mampu menyelesaikannya? Pembatasan dalam JavaScript 🛑Mari kita lihat contoh lagi. Misalkan pada setiap acara pengubahan ukuran jendela kita memanggil fungsi yang mahal. Sekarang, kami ingin fungsi mahal hanya akan dijalankan sekali dalam interval waktu yang diberikan. Demikianlah apa yang dimaksud dengan throttling Buat _33 dan 34 dengan kode berikut _7Hampir sama dengan debouncing. Perbedaan utama adalah _42 variabel. Hanya, jika benar kita memanggil fungsi callback. Dan diatur ke _43 di dalam 14. Jadi nilainya adalah _43 hanya setelah batas waktu yang diinginkanJadi, apa perbedaan antara debounce dan throttling❓Mari kita ambil contoh bilah pencarian 🔍 dari atas. Saat kami mendebouncing kolom input, kami mengatakan untuk hanya mengambil data saat perbedaan antara dua peristiwa 46 setidaknya 300 msDalam kasus pelambatan, kami membuat pemanggilan fungsi hanya setelah jangka waktu tertentu Misalkan Anda sedang mencari ensiklopedia di bilah pencarian. Panggilan pertama dilakukan pada _47 dan kami memerlukan waktu 300 md untuk mencapai 48. Panggilan berikutnya hanya akan dilakukan. Semua peristiwa di antaranya akan diabaikanJadi, untuk meringkas, debouncing adalah ketika perbedaan antara dua peristiwa 46 adalah 300 ms. Dan throttling adalah saat perbedaan antara dua pemanggilan fungsi adalah 300 ms. Pada dasarnya, fungsi dipanggil setelah selang waktu tertentuPenyimpanan dalam JavaScript 💾Akhirnya, topik kecil tapi penting untuk menyelesaikan semuanya penyimpanan lokal. Data tetap ada bahkan setelah menutup sesi Anda sessionStorage. Anda kehilangan data saat sesi Anda selesai, seperti saat Anda menutup browser di tab _8Dan kita selesai. 🏁 Saya harap Anda merasa lebih percaya diri tentang wawancara JS Anda berikutnya sekarang. saya berharap yang terbaik untukmu Jika Anda memiliki pertanyaan / saran / umpan balik, Anda dapat menghubungi saya di Twitter. https. //Indonesia. com/rajatetc 🗃️ Referensi Utama
IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN IKLAN insinyur perangkat lunak, unacademy • rajatgupta. xyz • twitter. com/rajatetc • pengembangan, desain, psikologi, dan startup Jika Anda membaca sejauh ini, tweet ke penulis untuk menunjukkan bahwa Anda peduli. Tweet terima kasih Belajar kode secara gratis. Kurikulum open source freeCodeCamp telah membantu lebih dari 40.000 orang mendapatkan pekerjaan sebagai pengembang. Memulai |