JavaScript

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 1 dari 12
  • 25 menit
  • 1 latihan kode
  • 4 soal kuis

Pengenalan JavaScript dan Tipe Data

Di bab ini (9 bagian)
  1. Tujuan
  2. JavaScript itu apa?
  3. Cara mencoba: console browser
  4. Variabel singkat
  5. Tipe data primitif dan object
  6. Memeriksa tipe dengan typeof
  7. Konversi tipe: implisit vs eksplisit
  8. Kesalahan umum
  9. Rangkuman

Tujuan bab ini

  • Menjelaskan apa itu JavaScript dan di mana saja ia bisa berjalan.
  • Mencoba kode JavaScript langsung dari console browser.
  • Mengenal tujuh tipe data primitif dan object, lalu memeriksanya dengan typeof.
  • Membedakan konversi tipe implisit dan eksplisit.

JavaScript itu apa?

JavaScript adalah bahasa pemrograman yang awalnya dibuat untuk membuat halaman web jadi "hidup". HTML menyusun isi halaman, CSS mengatur tampilannya, dan JavaScript mengatur perilakunya: tombol yang bisa diklik, form yang memeriksa isian, notifikasi yang muncul tanpa reload. Analoginya seperti rumah: HTML itu dinding dan ruangan, CSS itu cat dan dekorasi, JavaScript itu listrik yang membuat lampu, kipas, dan bel pintu berfungsi.

JavaScript dibuat oleh Brendan Eich di Netscape pada tahun 1995, konon hanya dalam sekitar 10 hari. Walau namanya mirip, JavaScript tidak ada hubungannya dengan Java; nama itu dipilih karena Java sedang populer waktu itu. Standar resminya bernama ECMAScript. Versi besar yang mengubah banyak hal adalah ES6 (ES2015), dan sejak itu ada versi baru setiap tahun (ES2016, ES2017, dan seterusnya).

Di mana JavaScript berjalan?

TempatContohKegunaan
BrowserChrome, Firefox, SafariInteraksi halaman web, manipulasi DOM
Node.jsServer, script di terminalBackend, API, tool seperti build script
Tempat lainDeno, Bun, aplikasi desktop (Electron)Runtime alternatif dan aplikasi lintas platform

Setiap browser punya engine JavaScript sendiri, misalnya V8 di Chrome. Node.js mengambil engine V8 itu dan menjalankannya di luar browser, jadi kamu bisa memakai bahasa yang sama untuk frontend dan backend. Bedanya ada di fitur sekitarnya: di browser ada document dan window, di Node.js ada akses file dan jaringan.

Cara mencoba: console browser

Kamu tidak perlu install apa pun untuk mulai. Buka browser, tekan F12 (atau Ctrl+Shift+J di Chrome, Cmd+Option+J di Mac), lalu pilih tab Console. Ketik kode, tekan Enter, dan hasilnya langsung muncul.

console.log("Halo, Ruang Materi!");
// Halo, Ruang Materi!

2 + 3
// 5

console.log() adalah cara paling umum untuk menampilkan sesuatu. Kalau sudah install Node.js, kamu juga bisa menyimpan kode di file halo.js lalu menjalankannya dengan node halo.js di terminal.

Variabel singkat

Variabel itu seperti kotak berlabel untuk menyimpan nilai. Di JavaScript modern ada dua kata kunci utama:

let umur = 19;        // nilainya boleh diganti
const nama = "Sari";  // tidak boleh diberi nilai baru

umur = 20;            // OK
// nama = "Budi";     // TypeError: Assignment to constant variable.

Ada juga var, cara lama sebelum ES6. Perbedaannya dibahas di bab tentang scope. Untuk sekarang, pakai const sebagai default dan let kalau nilainya memang akan berubah.

Tipe data primitif dan object

JavaScript bersifat dynamic typing: kamu tidak menulis tipe data saat membuat variabel. Tipenya melekat pada nilai, bukan pada variabel, jadi satu variabel bisa berisi angka lalu diganti teks.

Ada tujuh tipe primitif. Primitif artinya nilai sederhana yang tidak bisa diubah isinya (immutable).

TipeContohKeterangan
string"Halo", 'JS', `hai`Teks, pakai kutip satu, dua, atau backtick
number42, 3.14, -7, NaNBilangan bulat dan desimal dalam satu tipe
booleantrue, falseBenar atau salah
undefinedundefinedVariabel ada tapi belum diberi nilai
nullnullKosong yang disengaja oleh programmer
bigint123nBilangan bulat sangat besar (ES2020)
symbolSymbol("id")Nilai unik, sering untuk kunci property (ES6)

Selain itu ada object, tipe non-primitif yang menampung kumpulan data. Array dan function juga termasuk object.

Tabel tipe data JavaScript

const siswa = { nama: "Budi", umur: 17 };   // object
const nilai = [80, 90, 75];                 // array (juga object)

Bedanya undefined dan null sering bikin bingung. Bayangkan formulir: undefined itu kolom yang belum pernah diisi, sedangkan null itu kolom yang sengaja kamu isi "tidak ada". Satu lagi: number punya batas presisi. Bilangan bulat di atas Number.MAX_SAFE_INTEGER (9007199254740991) bisa kehilangan ketelitian, dan di situlah bigint berguna.

Memeriksa tipe dengan typeof

Operator typeof mengembalikan string nama tipe sebuah nilai.

console.log(typeof "Halo");       // "string"
console.log(typeof 42);           // "number"
console.log(typeof NaN);          // "number"
console.log(typeof true);         // "boolean"
console.log(typeof undefined);    // "undefined"
console.log(typeof 10n);          // "bigint"
console.log(typeof Symbol("x"));  // "symbol"
console.log(typeof { a: 1 });     // "object"
console.log(typeof [1, 2]);       // "object"
console.log(typeof function(){}); // "function"
console.log(typeof null);         // "object"  <- jebakan!

Perhatikan baris terakhir. typeof null menghasilkan "object", padahal null adalah primitif. Ini bug sejak versi pertama JavaScript yang tidak pernah diperbaiki karena terlalu banyak website lama yang bergantung pada perilaku itu. Untuk memeriksa null, bandingkan langsung: nilai === null. Untuk memeriksa array, pakai Array.isArray(nilai).

Juga lucu: NaN (Not a Number) bertipe "number". NaN muncul dari operasi angka yang gagal, misalnya "abc" * 2.

Konversi tipe: implisit vs eksplisit

Kadang JavaScript perlu mengubah tipe sebuah nilai. Ada dua cara.

Implisit (type coercion) terjadi otomatis saat operator bertemu tipe yang berbeda. Aturan pentingnya: operator + dengan salah satu operand string akan menyambung teks, sedangkan -, *, / selalu mencoba mengubah ke angka.

console.log("5" + 2);    // "52"  (2 diubah jadi string)
console.log("5" - 2);    // 3     ("5" diubah jadi number)
console.log("5" * "2");  // 10
console.log(true + 1);   // 2     (true jadi 1)
console.log("abc" - 1);  // NaN

Eksplisit berarti kamu sendiri yang meminta konversi, sehingga kode lebih jelas dan bisa ditebak.

console.log(Number("42"));      // 42
console.log(Number(""));        // 0
console.log(Number("12px"));    // NaN
console.log(parseInt("12px"));  // 12  (membaca angka di depan)
console.log(String(99));        // "99"
console.log(Boolean(0));        // false
console.log(Boolean("halo"));   // true

Langkah aman saat menerima input dari pengguna (misalnya dari prompt() atau form, yang selalu berupa string): ubah dulu dengan Number(), cek hasilnya dengan Number.isNaN(), baru hitung.

const input = "17";
const umur = Number(input);
if (Number.isNaN(umur)) {
  console.log("Bukan angka");
} else {
  console.log(umur + 1);  // 18, bukan "171"
}

Kesalahan umum

  • Menjumlahkan input tanpa konversi. "10" + "5" menghasilkan "105", bukan 15. Ubah dulu dengan Number().
  • Mengira typeof null adalah "null". Hasilnya "object". Pakai === null.
  • Memakai typeof untuk mendeteksi array. Hasilnya "object"; gunakan Array.isArray().
  • Membandingkan dengan NaN. NaN === NaN bernilai false. Pakai Number.isNaN(x).
  • Menganggap JavaScript sama dengan Java. Keduanya bahasa berbeda dengan sintaks dan cara kerja yang berbeda.

Rangkuman

  • JavaScript berjalan di browser dan, lewat Node.js, di server atau terminal; standarnya bernama ECMAScript.
  • Cara tercepat mencoba adalah console browser (F12, tab Console).
  • Ada tujuh primitif (string, number, boolean, undefined, null, bigint, symbol) plus object.
  • typeof memberi nama tipe, tapi typeof null menghasilkan "object" karena bug lama.
  • Konversi implisit terjadi otomatis (awas + dengan string); konversi eksplisit memakai Number(), String(), Boolean().

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 3. Kuis (4 soal)

Latihan kode: Detektor tipe data

Lengkapi dua fungsi berikut:

  • tipeData(nilai) mengembalikan nama tipe seperti typeof, kecuali null menghasilkan "null" dan array menghasilkan "array". Contoh: tipeData(42) menghasilkan "number", tipeData(null) menghasilkan "null", tipeData([1, 2]) menghasilkan "array".
  • keAngka(teks) mengubah string menjadi number dengan Number(). Kalau hasilnya NaN, kembalikan 0. Contoh: keAngka("17") menghasilkan 17, keAngka("abc") menghasilkan 0.

Gunakan return, bukan console.log.

Cek pemahaman

  1. 1Apa fungsi Node.js bagi JavaScript?

  2. 2Apa output kode berikut?

    console.log(typeof null);
  3. 3Ekspresi "5" - 2 menghasilkan string "52".

  4. 4Apa output kode berikut?

    const a = "10";
    const b = 2;
    console.log(a + b);