JavaScript adalah bahasa pemrograman yang menjadikan halaman web interaktif: memproses input pengguna, mengubah tampilan tanpa reload, dan berkomunikasi dengan server. Pada Course ini, kita mempelajari JavaScript secara bertahap mulai dari dasar bahasa, values dan types, functions, hingga DOM, asynchronous, security, testing, dan tooling modern.
Seluruh contoh kode pada Course ini diuji menggunakan Node.js 24 (LTS) dengan V8 13.6 yang mendukung ECMAScript 2025. Contoh yang membutuhkan browser diuji menggunakan jsdom dan browser modern. Apabila lingkungan Anda berbeda, sebagian contoh dapat menghasilkan keluaran yang sedikit berbeda, terutama fitur yang baru diadopsi browser.
Bab 1 Pengenalan JavaScript
Mengenal JavaScript sebagai bahasa dinamis multiguna yang berjalan di browser, server, dan perangkat.
Buka → # JavaScript dalam BrowserPeran JavaScript di browser: mengubah DOM, merespons event, dan berkomunikasi dengan server.
Buka → # JavaScript di Luar BrowserMenjalankan JavaScript di server, CLI, dan tooling dengan Node.js, Deno, dan Bun.
Buka → # JavaScript EngineBagaimana V8 dan engine lain menerjemahkan serta mengoptimalkan kode menjadi program yang berjalan.
Buka → # JavaScript StandardsPeran ECMAScript, TC39, WHATWG, dan W3C dalam menjaga konsistensi bahasa lintas browser.
Buka →Bab 2 Persiapan Lingkungan
Mengenal DevTools untuk menginspeksi halaman, menguji kode, dan membaca galat.
Buka → # ConsoleMenampilkan pesan, menguji ekspresi, dan membaca laporan galat melalui console.
Buka → # Script TagMenyisipkan JavaScript ke halaman HTML dengan tag script pada posisi yang tepat.
Buka → # External JavaScriptMemisahkan kode ke berkas .js eksternal agar rapi, dapat dipakai ulang, dan mudah diuji.
Buka → # defer dan asyncMengatur waktu eksekusi script eksternal dengan atribut defer dan async.
Buka → # Pengenalan Node.jsMenjalankan JavaScript di terminal dengan Node.js: REPL, berkas script, dan pengecekan versi.
Buka →Bab 3 Dasar Pemrograman
Membedakan statement dan expression serta memahami urutan eksekusi program.
Buka → # CommentsMenulis komentar satu baris dan multi baris yang membantu, bukan mengganggu, pembaca kode.
Buka → # VariablesMenyimpan, membaca, dan memperbarui nilai dengan variabel.
Buka → # let, const, dan varMemilih deklarasi yang tepat dan memahami block scope serta hoisting.
Buka → # Naming ConventionsMenamai identifier dengan camelCase dan konvensi yang membuat kode mudah dibaca.
Buka → # Strict ModeMengaktifkan mode ketat untuk menangkap kesalahan pemrograman lebih awal.
Buka → # Debugging DasarMelacak dan memperbaiki bug dengan console.log, breakpoints, dan debugger DevTools.
Buka →Bab 4 Values dan Types
Mengenal tujuh tipe primitive dan sifat immutable yang menyertainya.
Buka → # StringsMembuat string dengan kutip tunggal, kutip ganda, dan backtick beserta escape sequence.
Buka → # NumbersBekerja dengan number IEEE-754: integer, floating point, Infinity, dan NaN.
Buka → # BooleansMenggunakan nilai true dan false sebagai dasar pengambilan keputusan.
Buka → # null dan undefinedMembedakan nilai kosong yang disengaja (null) dan nilai yang belum diisi (undefined).
Buka → # bigint dan SymbolTipe bigint untuk angka melebihi batas Number dan Symbol untuk identifier unik.
Buka → # typeofMemeriksa tipe nilai dengan operator typeof beserta keunikan null dan function.
Buka → # Type ConversionMengubah tipe secara eksplisit dengan Number(), String(), Boolean(), dan implisit oleh coercion.
Buka → # Truthy dan FalsyDaftar nilai falsy dan cara JavaScript menilai nilai lain sebagai true.
Buka →Bab 5 Operators
Perhitungan dengan +, -, *, /, %, ** beserta presisi floating point.
Buka → # Comparison OperatorsMembandingkan dua nilai dengan >, <, >=, dan <= yang menghasilkan boolean.
Buka → # Logical OperatorsMenggabungkan kondisi dengan &&, ||, ! beserta short-circuit evaluation.
Buka → # Assignment OperatorsMemberi nilai dengan = dan variasinya +=, -=, *=, /=, dan ??=.
Buka → # Nullish CoalescingMemberi nilai cadangan hanya untuk null dan undefined dengan operator ??.
Buka → # Optional ChainingMengakses properti bertingkat dan memanggil method dengan aman menggunakan ?.
Buka → # Ternary OperatorMenulis kondisi satu baris dengan bentuk condition ? nilaiJikaBenar : nilaiJikaSalah.
Buka → # Operator PrecedenceUrutan evaluasi operator dan peran tanda kurung dalam mengaturnya.
Buka → # Equality dan Type CoercionMembedakan === dan == serta aturan konversi tipe saat perbandingan.
Buka →Bab 6 Control Flow
Mengambil keputusan dengan if, else if, dan else beserta aturan bloknya.
Buka → # switchMenyederhanakan pilihan ganda dengan switch dan peran break pada tiap case.
Buka → # for LoopMengulang kode dengan jumlah iterasi yang pasti menggunakan for.
Buka → # while dan do-whileMengulang berdasarkan kondisi dengan while dan do-while yang mengeksekusi minimal sekali.
Buka → # break dan continueMenghentikan loop atau melewati satu iterasi secara terkendali.
Buka → # Nested LoopsMenyusun loop di dalam loop untuk data dua dimensi dan kombinasi.
Buka → # Control Flow Best PracticesMenjaga alur program tetap dangkal, jelas, dan mudah diuji.
Buka →Bab 7 Functions
Mendefinisikan function bernama dan memahami hoisting yang memungkinkan pemanggilan lebih awal.
Buka → # Function ExpressionsMenyimpan function sebagai nilai dalam variabel dan perbedaannya dengan declaration.
Buka → # Parameters dan ArgumentsMengirim data ke function melalui parameter dan memahami argument yang tidak terisi.
Buka → # Return ValuesMengembalikan hasil dari function dan perilaku return tanpa nilai.
Buka → # Default ParametersMemberi nilai bawaan pada parameter yang tidak dikirim oleh pemanggil.
Buka → # Rest ParametersMenerima banyak argument sebagai satu array dengan syntax ...rest.
Buka → # Arrow FunctionsMenulis function ringkas dengan => dan memahami perilaku this yang berbeda.
Buka → # CallbacksMengirim function sebagai argument untuk dipanggil oleh function lain.
Buka → # ScopeGlobal scope, function scope, block scope, dan lexical environment.
Buka → # ClosuresFunction yang tetap mengingat lingkungan tempat ia dibuat.
Buka → # RecursionFunction yang memanggil dirinya sendiri beserta base case penghentinya.
Buka →Bab 8 Arrays
Membuat array dengan literal [] dan konstructor Array beserta perbedaannya.
Buka → # Mengakses ElemenMembaca elemen lewat index, at(), length, dan penelusuran loop.
Buka → # Mengubah ArrayMenambah, menghapus, dan menyisipkan elemen dengan push, pop, shift, unshift, dan splice.
Buka → # Array MethodsMethod esensial: slice, concat, indexOf, includes, join, flat, dan flatMap.
Buka → # map, filter, dan reduceTransformasi data dengan tiga method iterator yang paling sering dipakai.
Buka → # find, some, dan everyMencari dan memeriksa elemen dengan find, findIndex, some, dan every.
Buka → # Sorting dan ReversingMengurutkan data dengan sort dan comparator beserta toSorted yang tidak mengubah array asal.
Buka → # Destructuring ArraysMembongkar array ke variabel dengan pattern destructuring dan rest.
Buka → # Array Best PracticesMemilih method yang tepat dan mengendalikan mutasi array.
Buka →Bab 9 Objects
Membuat object dengan kurung kurawal dan pasangan key-value.
Buka → # Properties dan MethodsMembaca, mengubah, dan menghapus properti serta memanggil method object.
Buka → # Computed PropertiesMenentukan nama properti secara dinamis dengan ekspresi dalam kurung siku.
Buka → # Object DestructuringMembongkar properti object ke variabel dengan nilai bawaan dan penggantian nama.
Buka → # Spread SyntaxMenyalin dan menggabungkan object dengan operator spread (...).
Buka → # Object MethodsObject.keys, Object.values, Object.entries, Object.assign, dan Object.freeze.
Buka → # Optional PropertiesMenangani properti yang mungkin tidak ada dengan in, Object.hasOwn, dan optional chaining.
Buka → # Copying dan Comparing ObjectsShallow copy, deep clone dengan structuredClone, dan perbandingan referensi.
Buka → # Object Best PracticesMenjaga object ringkas: nama konsisten, destructuring, dan pemisahan data dari perilaku.
Buka →Bab 10 Strings dan Regex
Method esensial string: slice, replace, trim, split, padStart, dan repeat.
Buka → # Template LiteralsMenyusun string dengan backtick, interpolasi ekspresi, dan multi baris.
Buka → # Searching StringsMencari teks dengan indexOf, includes, startsWith, endsWith, dan matchAll.
Buka → # Regular ExpressionsMembuat pattern regex dengan literal /.../ dan constructor RegExp.
Buka → # Regex PatternsCharacter class, quantifier, anchor, group, dan alternation dalam pattern.
Buka → # Regex FlagsMengatur perilaku regex dengan flag g, i, m, s, u, dan y.
Buka → # Regex ValidationMemvalidasi format input seperti email, username, dan nomor telepon dengan regex.
Buka →Bab 11 Collections
Key-value collection dengan kunci bertipe apa pun, urutan terjaga, dan ukuran langsung.
Buka → # SetKumpulan nilai unik untuk menghilangkan duplikat dan memeriksa keanggotaan.
Buka → # WeakMap dan WeakSetCollection berreferensi lemah yang tidak menghalangi garbage collection.
Buka → # Iterables dan IteratorsProtokol iterasi yang menyeragamkan cara menelusuri struktur data.
Buka → # for-ofMenelusuri nilai iterable dengan for-of beserta entries(), keys(), dan values().
Buka → # Choosing a CollectionMemilih antara array, object, Map, dan Set berdasarkan pola akses datanya.
Buka →Bab 12 Error Handling
Membedakan galat saat parsing dan galat saat program berjalan.
Buka → # throwMelempar galat secara eksplisit ketika kondisi program tidak valid.
Buka → # try-catch-finallyMenangkap galat agar program tetap berjalan dan menuntaskan sumber daya.
Buka → # Error ObjectsProperti name, message, stack dan turunannya: TypeError, RangeError, ReferenceError.
Buka → # Custom ErrorsMembuat class galat sendiri dengan extends Error untuk kebutuhan aplikasi.
Buka → # Error Boundaries in Application DesignMerancang batas penanganan galat agar satu kegagalan tidak merusak keseluruhan aplikasi.
Buka → # Debugging ErrorsMembaca stack trace dan memakai debugger untuk melacak penyebab galat.
Buka →Bab 13 Modules
Mengapa kode dipecah dan bagaimana ES Modules bekerja di browser dan Node.js.
Buka → # Named ExportsMenyediakan banyak nilai dari satu module dengan export bernama.
Buka → # Default ExportsSatu nilai utama per module dan konvensi penamaan pengimpennya.
Buka → # ImportsMengimpor module dengan import statement, namespace import, dan alias as.
Buka → # Dynamic ImportMemuat module saat dibutuhkan dengan import() yang mengembalikan promise.
Buka → # Module ScopeSetiap module memiliki scope sendiri; hanya yang diexport yang terlihat luar.
Buka → # Circular DependenciesMengenali ketergantungan melingkar antar module dan cara memecahnya.
Buka → # Module OrganizationMenyusun struktur folder module yang mudah ditemukan dan dirawat.
Buka →Bab 14 Object-Oriented JavaScript
Setiap object memiliki prototype sebagai sumber properti yang diwarisi.
Buka → # Prototype ChainRantai pencarian properti dari object hingga Object.prototype dan null.
Buka → # Constructor FunctionsPola klasik membuat object dengan function dan operator new.
Buka → # ClassesSintaks class modern sebagai pembungkus rapi pola prototype.
Buka → # ConstructorsInisialisasi instance dengan constructor() dan parameter konfigurasi.
Buka → # InheritancePewarisan antar class dengan extends dan pemanggilan super.
Buka → # Private FieldsMenyembunyikan internal class dengan private field #nama dan private method.
Buka → # Static MembersProperti dan method milik class itu sendiri, bukan milik instance.
Buka → # Getters dan SettersAkses properti melalui get dan set yang menghitung dan memvalidasi nilai.
Buka → # Composition vs InheritanceKapan menyusun object dari bagian dan kapan mewarisi class.
Buka →Bab 15 Functional Programming
Function tanpa side effect yang selalu menghasilkan keluaran sama untuk masukan sama.
Buka → # ImmutabilityMenghindari perubahan data dengan salinan: spread, toSorted, dan structuredClone.
Buka → # Higher-Order FunctionsFunction yang menerima atau mengembalikan function lain.
Buka → # Function CompositionMenggabungkan function sederhana menjadi pipeline pemrosesan data.
Buka → # Closures in PracticePenerapan closures nyata: counter, memoization, dan encapsulation.
Buka → # Declarative ProgrammingMenyatakan hasil yang diinginkan, bukan langkah imperatif untuk mencapainya.
Buka → # Functional PatternsPola populer: currying, partial application, dan pipeline.
Buka →Bab 16 Asynchronous JavaScript
Mengapa operasi lambat membutuhkan penanganan asinkron agar halaman tetap responsif.
Buka → # Event LoopCara runtime memproses call stack, macrotask, dan microtask berurutan.
Buka → # CallbacksPola asinkron tertua beserta masalah callback nesting yang menyertainya.
Buka → # PromisesObject representasi hasil masa depan dengan state pending, fulfilled, dan rejected.
Buka → # Promise ChainingMenyambung operasi asinkron berurutan dengan then dan catch.
Buka → # async-awaitMenulis kode asinkron yang terbaca seperti sinkron dengan async dan await.
Buka → # Promise CombinatorsMenggabungkan promises dengan all, allSettled, race, dan any.
Buka → # Error Handling Asynchronous CodeMenangkap galat asinkron dengan try-await-catch dan .catch().
Buka → # TimersMenjadwalkan eksekusi dengan setTimeout, setInterval, dan pembatalannya.
Buka → # Concurrency PatternsMembatasi paralelisme, antrean tugas, dan pemrosesan berkas besar.
Buka →Bab 17 DOM
Pohon objek representasi halaman, node, dan hubungannya dengan HTML.
Buka → # Selecting ElementsMemilih elemen dengan querySelector, querySelectorAll, dan getElementById.
Buka → # Traversing DOMBergerak antar elemen: parent, children, sibling, dan closest().
Buka → # Reading dan Changing ContentMembaca dan mengubah isi elemen dengan textContent, innerHTML, dan innerText.
Buka → # Attributes dan PropertiesAtribut HTML, dataset data-*, dan properti yang merefleksikan atribut.
Buka → # classListMengelola class elemen dengan add, remove, toggle, replace, dan contains.
Buka → # Creating ElementsMembuat elemen dengan createElement, menempelkannya dengan append, prepend, dan insertBefore.
Buka → # Removing ElementsMenghapus elemen dengan remove, replaceWith, removeChild, dan pola innerHTML = ''.
Buka → # DOM FragmentsDocumentFragment untuk menyusun banyak elemen di luar pohon lalu menempelkannya sekali.
Buka → # Safe DOM ManipulationMenyisipkan konten dinamis dengan aman: textContent, escapeHtml, dan batasan innerHTML.
Buka →Bab 18 Browser Events
Mendaftarkan reaksi terhadap interaksi dengan addEventListener dan removeEventListener.
Buka → # Event ObjectInformasi peristiwa dalam object event: target, type, dan method preventDefault.
Buka → # Event BubblingPeristiwa yang merambat naik dari elemen target ke leluhurnya.
Buka → # Event CapturingFase menangkap peristiwa dari akar dokumen menuju elemen target.
Buka → # Event DelegationSatu listener untuk banyak elemen dengan memanfaatkan bubbling.
Buka → # Keyboard EventsMenangani keydown dan keyup beserta properti key dan code.
Buka → # Pointer EventsSatu model peristiwa untuk mouse, touch, dan stylus dengan pointerdown dan pointermove.
Buka → # Form EventsPeristiwa submit, change, dan input pada form beserta urutannya.
Buka → # Custom EventsMembuat dan memicu peristiwa sendiri dengan CustomEvent dan detail.
Buka →Bab 19 Forms dan Input
Mengambil nilai input, select, dan textarea langsung maupun lewat FormData.
Buka → # Form ValidationMemvalidasi input sebelum data dikirim ke server.
Buka → # Constraint Validation APIMemakai validity, checkValidity, dan setCustomValidity bawaan browser.
Buka → # Handling Form SubmissionMenangani submit tanpa reload dengan preventDefault dan fetch.
Buka → # Preventing Default BehaviorMenghentikan perilaku bawaan browser secara selektif dan aman.
Buka → # Accessible Form FeedbackMenyampaikan pesan galat yang terbaca oleh screen reader dengan ARIA.
Buka → # Safe Input HandlingMemperlakukan input pengguna sebagai data, bukan kode.
Buka →Bab 20 Browser APIs
Permintaan HTTP modern dengan fetch, Response, dan pembacaan body.
Buka → # URL dan URLSearchParamsMengurai dan membangun URL serta query string dengan aman.
Buka → # Web StorageMenyimpan data di browser dengan localStorage dan sessionStorage.
Buka → # Cookies OverviewMembaca dan menulis cookie serta atribut penting seperti Secure dan HttpOnly.
Buka → # History APIMengubah riwayat dan URL halaman tanpa reload dengan pushState.
Buka → # Clipboard APIMembaca dan menulis clipboard secara asinkron dengan izin pengguna.
Buka → # Intersection ObserverMengamati elemen yang masuk viewport secara efisien untuk lazy loading.
Buka → # Resize ObserverMerespons perubahan ukuran elemen tanpa mengandalkan event resize.
Buka → # Mutation ObserverMengamati perubahan struktur dan isi DOM secara asinkron.
Buka → # Geolocation APIMendapatkan posisi pengguna dengan izin dan penanganan galatnya.
Buka → # Browser API PermissionsMemeriksa status izin dengan Permissions API dan pola permintaan yang baik.
Buka →Bab 21 Data dan Serialization
Format pertukaran data JSON dan batasannya dibanding tipe JavaScript.
Buka → # JSON SerializationMenyerialisasi dan mengurai dengan JSON.stringify dan JSON.parse.
Buka → # Structured CloneMenyalin data kompleks termasuk Map, Set, dan Date dengan structuredClone.
Buka → # DatesBekerja dengan tanggal dan waktu serta jebakan zona waktu.
Buka → # Intl APIMemformat tanggal, angka, dan mata uang sesuai locale pengguna.
Buka → # URL EncodingMenyandikan data dalam URL dengan encodeURIComponent dan URLSearchParams.
Buka → # Working with External DataMengolah data dari API: normalisasi, guard clause, dan cache sederhana.
Buka →Bab 22 Network dan API
Model request-response, metode, status, dan header secara ringkas.
Buka → # Fetch RequestsMenyusun permintaan fetch dengan options, header, dan body.
Buka → # Request MethodsGET, POST, PUT, PATCH, DELETE dan kapan masing-masing dipakai.
Buka → # Response StatusKeluarga status 2xx, 3xx, 4xx, 5xx dan pemeriksaan dengan response.ok.
Buka → # Headers dan Content TypesMengelola Content-Type, Accept, dan header kustom pada permintaan.
Buka → # CORSMengapa permintaan lintas origin dibatasi dan cara server mengizinkannya.
Buka → # AbortControllerMembatalkan permintaan yang tidak lagi dibutuhkan dengan signal.
Buka → # PaginationMenelusuri data halaman demi halaman dengan query page dan cursor.
Buka → # Retry dan Timeout StrategiesMengulang permintaan gagal dengan backoff dan membatasi waktu tunggu.
Buka → # API Error HandlingMerancang penanganan galat API yang informatif bagi pengguna.
Buka →Bab 23 Security
Mengenal vektor XSS: penyisipan markup dan skrip melalui input pengguna.
Buka → # Safe DOM UpdatesMenggunakan textContent dan sanitasi alih-alih innerHTML mentah.
Buka → # Avoiding evalMengapa eval dan new Function berisiko serta alternatif yang aman.
Buka → # URL ValidationMemvalidasi URL sebelum dipakai: protokol dan origin yang diizinkan.
Buka → # Dependency SecurityMenjaga dependensi dengan npm audit, lockfile, dan pembaruan berkala.
Buka → # Secrets dan Client-Side CodeKode browser terlihat semua orang; rahasia harus tetap berada di server.
Buka → # Content Security Policy OverviewMembatasi sumber skrip dan gaya dengan header Content-Security-Policy.
Buka → # Secure Browser StorageMemilih data yang boleh disimpan di browser dan menandai data sensitif.
Buka →Bab 24 Testing
Mengapa kode diuji dan perbedaan unit, integration, dan end-to-end testing.
Buka → # Unit TestingMenguji unit terkecil dengan node:test yang tersedia bawaan Node.js.
Buka → # AssertionsMemeriksa hasil dengan assert.strictEqual, deepStrictEqual, dan assert.throws.
Buka → # Mocking dan Test DoublesMenggantikan dependensi dengan mock, stub, dan fake untuk pengujian terisolasi.
Buka → # DOM TestingMenguji kode DOM dengan jsdom di lingkungan Node.js.
Buka → # Integration TestingMenguji kerja sama beberapa unit sekaligus dalam satu skenario.
Buka → # Browser Automation OverviewPengenalan otomasi browser dengan Playwright untuk pengujian end-to-end.
Buka → # Test CoverageMengukur cakupan pengujian dan menafsirkan angkanya dengan sehat.
Buka → # Testing StrategyMenyusun piramide testing dan memilih apa yang layak diuji.
Buka →Bab 25 Tooling dan Code Quality
Memeriksa kualitas kode secara otomatis dan memperbaiki pelanggarannya.
Buka → # PrettierMenyeragamkan format kode agar diskusi review tetap berfokus pada isinya.
Buka → # package.json OverviewManifes proyek: name, scripts, dependencies, dan devDependencies.
Buka → # npm dan Package ManagementMemasang, memperbarui, dan mengunci dependensi dengan npm.
Buka → # Environment ConfigurationMemisahkan konfigurasi per lingkungan dengan variabel environment.
Buka → # Source MapsMemetakan kode hasil build kembali ke kode asal saat debugging.
Buka → # Bundlers OverviewPeran esbuild, Rollup, dan Vite dalam menggabungkan module.
Buka → # Build vs RuntimeApa yang terjadi saat build dan apa yang tetap berjalan di browser.
Buka →Bab 26 Performance
Bagaimana script memengaruhi parsing HTML dan cara mempercepat pemuatannya.
Buka → # Code SplittingMemecah bundle agar halaman hanya memuat kode yang dibutuhkan.
Buka → # Lazy Loading ModulesMemuat module saat dibutuhkan dengan dynamic import.
Buka → # Memory ManagementAlokasi memori, garbage collection, dan siklus hidup data.
Buka → # Avoiding Memory LeaksMengenali sumber kebocoran: listener, timer, dan referensi yang tersisa.
Buka → # ProfilingMengukur waktu eksekusi dengan console.time, performance.now, dan DevTools.
Buka → # Rendering PerformanceLayout, paint, dan cara menulis update DOM yang hemat.
Buka → # Performance MeasurementMenetapkan metrik, mengukur, dan membandingkan kondisi sebelum-sesudah.
Buka →Bab 27 Architecture dan Patterns
Memisahkan logika, tampilan, dan pengelolaan data.
Buka → # Modular ArchitectureMenyusun aplikasi dari module dengan tanggung jawab tunggal.
Buka → # State Management FundamentalsSumber kebenaran state, aliran update satu arah, dan sinkronisasi tampilan.
Buka → # Observer PatternMenerbitkan perubahan dan berlangganan notifikasi antar komponen.
Buka → # Factory PatternMemusatkan pembuatan object melalui function factory.
Buka → # Dependency Injection OverviewMenyuntikkan dependensi agar kode mudah diuji dan diganti.
Buka → # Error Handling StrategyKebijakan galat yang konsisten dari lapisan data hingga lapisan UI.
Buka → # Refactoring JavaScriptMemperbaiki struktur kode tanpa mengubah perilakunya.
Buka →Bab 28 TypeScript dan Ecosystem
Menilai momen yang tepat menambahkan tipe statis pada proyek JavaScript.
Buka → # JavaScript vs TypeScriptPerbedaan mendasar, konsep type, dan biaya adopsi TypeScript.
Buka → # Transpilation OverviewCara kode TypeScript dikompilasi menjadi JavaScript yang berjalan.
Buka → # Framework OverviewPeta singkat React, Vue, Svelte, dan Angular di atas JavaScript.
Buka → # Memilih Tools Berdasarkan KebutuhanKerangka memilih framework, bundler, dan testing tool untuk proyek Anda.
Buka →Bab 29 Proyek
Membangun kalkulator web: struktur dan logika, operasi aritmetika, serta validasi dan error handling.
Lihat proyek → # Proyek: Aplikasi TodoMembangun aplikasi todo: menambah dan menghapus tugas, status dan filter, penyimpanan lokal, serta pengujian.
Lihat proyek → # Proyek: Aplikasi CuacaMembangun aplikasi cuaca: mengambil data API, menampilkan data, loading dan error states, serta optimasi permintaan.
Lihat proyek → # Proyek: Pencarian dan FilterMembangun antarmuka pencarian dan filter data: mengelola data, pencarian teks, filter dan sorting, optimasi interaksi.
Lihat proyek → # Proyek: Dashboard DataMembangun dashboard data: mengambil data, mengelola state, visualisasi, serta error handling dan testing.
Lihat proyek → # Proyek: Aplikasi CatatanMembangun aplikasi catatan: membuat dan mengedit, pencarian, penyimpanan data, serta pengujian dan refactoring.
Lihat proyek →Bab 30 Sumber Belajar
Menjelajah MDN Web Docs sebagai rujukan utama belajar dan mencari JavaScript.
Buka → # ECMAScript SpecificationMembaca spesifikasi ECMA-262: struktur dokumen dan istilah dasarnya.
Buka → # Browser CompatibilityMemeriksa dukungan fitur dengan caniuse dan tabel kompatibilitas MDN.
Buka → # JavaScript ReferencePeta rujukan resmi: standard built-in objects, statements, dan expressions.
Buka → # Testing ResourcesDokumentasi resmi node:test, Vitest, Playwright, dan sumber latihan pengujian.
Buka →