Mari gue bahas tentang tipe data. Basic banget emang. Tapi menurut gue ini penting. Karena apa? Karena basic! Gue gak pengen kalau nanti gue gak ngerti kode yang gue tulis. Misal, gue pengen ngerti kenapa milih pake null daripada undefined.

Oiya, ini gue bahas buat javascript ya. Lagi belajar javascript soalnya nih si aing.

The Types

Ok. Dalam javascript ada 7 tipe data primitif.

  1. Number - untuk nyimpen data bilangan atau angka
  2. BigInt - untuk nyimpen data bilangan atau angka yang nilainya gede banget
  3. String - untuk nyimpen teks
  4. Boolean - nilainya cuma true atau false
  5. Symbol - untuk nyimpen nilai unique dan tetap
  6. Undefined - gak ada nilainya
  7. Null - bernilai null

Juga, ada tipe data yang namanya Object. Yes, objek adalah tipe data.

What the f is primitive?

Tipe data primitif adalah tipe data yang bukan turunan dari objek apapun, gak punya method. Pastinya, Object tidak termasuk dalam tipe data primitif, modern dia mah, udah bisa nyimpen banyak nilai dan punya method.

Biar pos ini agak panjang. Mari gue bahas satu-satu itu tipe data.

Number

Untuk nyimpen data angka. Mau itu bilangan bulat atau desimal. Kalau desimal, tinggal pake titik untuk pecahannya. Kalau untuk nilai min, tinggal dikasih - di depan angkanya.

// bilangan bulat
let angka = 1

// bilangan desimal
let angka2 = 1.5

Nah untuk tipe data number ini, kita bisa pake operator aritmatika untuk ngitung-ngitung. Apa aja itu teh?

* perkalian
/ pembagian
+ penambahan
- pengurangan
% modulus
++ increment
-- decrement

Contoh:

let a = 10;
console.log(typeof(a)); // number
let b = 6;
console.log(typeof(b)); // number

let c = a * b;
console.log(c); // 60

let d = a / b;
console.log(d); // 1.6666666666666667

let e = a + b;
console.log(e); // 16

let f = a - b;
console.log(f); // 4

let g = a % b;
console.log(g); // 4

a++;
console.log(a); // 11

b--;
console.log(b); // 5

Number juga menyediakan nilai-nilai spesial untuk kasus tertentu, yaitu:

  1. Infinity - untuk nilai plus tak hingga
  2. -Infinity - untuk nilai min tak hingga
  3. NaN alias Not a Number - untuk yang bukan nomor
let h = 10;
let i = 0;
let j = -0;
let k = "nol";

let l = h / i;
console.log(l); // Infinity

let m = h / j;
console.log(m); // -Infinity

let n = h / k;
console.log(n); // NaN

BigInt

Untuk nyimpen angka yang nilainya lebih dari 2^53 alias 9.0071993e+15. Hmm, berape tuh?

Cirinya, ditambahin n setelah nulis angkanya.

let gedeBangetAnjeng = 900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222n;

console.log(typeof gedeBangetAnjeng); // BigInt

console.log(gedeBangetAnjeng);
// 900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222900719925474099142456455555555555555555555555555555555555555555555555552222222222222222222n

Kalau itu si gedeBangetAnjeng gak ditambahin n di belakangnya, nilainya jadi infinity.

Nah, BigInt sama Number kagak bisa dicampur, gak bisa di-aritmatika-in. Bakal eror nantinya.

String

Nah ini mah nyimpen teks. Cirinya ada quote diantara teksnya, mau itu single ' atau double ". Biarpun itu angka, tapi kalau udah di-quote mah tetep aja jadi string.

let string1 = "java";
console.log(typeof(string1)); // string

let string2 = 'script';
console.log(typeof(string2)); // string

let string3 = "6";
console.log(typeof(string3)); // string

Operator + bisa dipake sama string untuk menggabungkan string.

let stringCombined = string1 + string2 + string3;
console.log(stringCombined) // javascript6

Boolean

Cuman true atau false doang.

let akuTampan = true;
let kamuTampan = false;

Biasanya muncul juga di operasi logika nih.

console.log(akuTampan && kamuTampan) // false
console.log(akuTampan || kamuTampan) // true

Di pengkondisian juga.

if (akuTampan) {
  console.log("aku tampan");
}

Symbol

Ini teh untuk bikin data yang unique. Jadi, walaupun nilai symbolnya sama, tapi itu teh tetep beda.
Untuk bikin variabel ini, harus pake Symbol() dengan string opsional yang bisa disimpen di dalem kurungnya.

let simbol1 = Symbol();
let simbol2 = Symbol('anjay');
let simbol3 = Symbol();
let simbol4 = Symbol('anjay');

console.log(typeof simbol1); // symbol
console.log(typeof simbol2); // symbol
console.log(typeof simbol3); // symbol
console.log(typeof simbol4); // symbol

console.log(simbol1 == simbol2); // false
console.log(simbol1 == simbol3); // false
console.log(simbol2 == simbol4); // false

Undefined

Nah, kalau kita bikin variabel nih. Tapi gak di-assign nilai apa-apa, maka secara default nilainya adalah undefined.

let kosong;
console.log(kosong); // undefined

Null

Nah, kalau ini mah, kita sengaja nih ngasih nilai null ke variabel yang kita bikin.

let kosongDong = null;
console.log(kosongDong); // null

Terus, null sama undefined apa bedanya bangsaaat?

Selain karena yang satu value-nya di-assign dan yang satu belum, tipe mereka berdua juga beda.

console.log(typeof kosong); // undefined
console.log(typeof kosongDong); // object

console.log(kosong == kosongDong); // true
console.log(kosong === kosongDong); // false
console.log(kosong !== kosongDong); // true

Jadi, variabel yang belum di-assign alias belum didefinisikan itu bertipe undefined sedangkan kalau dikasih nilai null jadi bertipe object. Sama-sama kosong tapi beda tipe.

Object

Objek adalah variabel yang banyak nilainya dan itu nilai teh macem-macem, ada key-nya juga.

Array di mana?

Berbeda denga PHP yang menjadikan Array sebagai sebuah tipe data, Javascript memperlakukan Array sebagai objek, makanya punya banyak method tuh.

let serangga = ['Papatong', 'Gangsir']

console.log(typeof serangga); // object