Artikel ini membahas tentang tipe data pada Javascript beserta karakteristik uniknya. Javascript memiliki 7 tipe data, yaitu: null, undefined, boolean, number, bigint, string, dan symbol (diperkenalkan di ES6). Serta satu tipe data kompleks bernama object. Javascript merupakan salah satu loosely typed language yang membuat variabelnya tidak terikat tipe data tertentu. Namun,
nilai dari variabelnya lah yang memiliki tipe data tertentu. Dengan kata lain, variabel yang sama bisa diisi dengan nilai yang berbeda tipe datanya. Contoh:
1
2
3
4
let name // variabel name bernilai undefined
name = "kodekami.com" // nilai name bertipe data string
name = 20 // nilai name bertipe data number
name = true // nilai name bertipe data boolean
Untuk mengurangi kemungkinan membuat error, sebaiknya suatu variabel memiliki nilai yang konsisten tipe datanya.
Pengecekan tipe data dari nilai suatu variabel dapat dilakukan dengan menggunakan operator typeof. Contoh:
1 2 3 4 5 6 7 8 9 10 11 | let name console.log(typeof name) // output: undefined name = "kodekami.com" // nilai name bertipe data string console.log(typeof name) // output: string name = 20 // nilai name bertipe data number console.log(typeof name) // output: number name = true // nilai name bertipe data boolean console.log(typeof name) // output: boolean |
Undefined
Undefined adalah tipe data primitive yang nilainya undefined atau tidak terdefinisikan. Tipe data ini adalah merupakan tipe data default untuk variabel yang dideklarasikan tanpa nilai. Contoh:
1 2 3 | let name console.log(name) // output: undefined console.log(typeof name) // output: undefined |
Uniknya, variabel yang belum dideklarasikan juga akan bertipe undefined jika dicek oleh operator typeof, seperti contoh berikut:
1 | console.log(typeof kelas) // output: undefined |
Null
Null adalah tipe data primitive yang nilainya null. Perbedaan nilai null dan undefined terletak pada tipenya, null merupakan pointer untuk object yang kosong sehingga ketika dicek menggunakan operator typeof hasil outputnya yaitu object. Contoh:
1 2 | let obj = null console.log(typeof obj) // output: object |
Nilai null biasanya didapatkan dari response server yang berupa JSON.
Number
Number adalah tipe data yang mewakili seluruh tipe data angka, seperti integer (bilangan bulat) dan floating point atau desimal. Contoh:
1 2 3 4 | let num = 100 // integer atau bilangan bulat 100 let minsnum = -100 // integer atau bilangan bulat -100 let desim = 10.01 // desimal let desnum = 100.0 // diinterpretasikan sebagai integer 100 |
Rentang nilai yang bisa ditampung oleh tipe data number yakni antara -(2^53 - 1) dan 2^53 - 1 atau -9007199254740991 sampai 9007199254740991. Jika sebuah number memiliki nilai lebih dari rentang ini, maka sebaiknya menggunakan tipe data BigInt.
NaN
NaN atau Not a Number adalah nilai numeric yang spesial. Digunakan untuk memberitahu bahwa nilai dari variabel tersebut adalah invalid number atau bukan termasuk angka. Contoh:
1 | console.log("a" / 2) // output NaN |
NaN pada contoh di atas didapatkan karena operator matematika tidak berlaku untuk string.
Keunikan dari nilai NaN yaitu:
- Operasi matematika pada NaN akan menghasilkan NaN
- Operasi perbandingan tidak dapat dilakukan pada nilai NaN dan akan menghasilkan nilai false.
Contoh:
1 2 3 4 5 | console.log(100.0 / 100) // 100/100 outputnya 1 console.log(NaN / NaN) // outputnya NaN console.log(100.0 === 100) // output true karena 100.00 bernilai sama dengan 100 console.log(NaN == NaN) // output false |
String
String pada Javascript adalah tipe data yang berhubungan dengan karakter. String terdiri dari satu atau lebih karakter yang dibatasi oleh simbol petik ' ', petik dua " ", ataupun backtick ``.
Contoh penggunaan string Javascript:
1 2 3 4 5 6 | let nama = "Fahru" console.log(nama) // output: Fahru let website = "kodekami.com" console.log(website) // output: kodekami.com let belajar = `Javascript` console.log(belajar) // output: Javascript |
Dikarenakan string merupakan kumpulan dari satu atau lebih karakter, maka kita bisa mencari panjang string dan melakukan perulangan layaknya array. Seperti contoh berikut ini:
1 2 | let kata = "Fahru" console.log(kata.length) // output: 5 |
1 2 3 4 5 6 7 8 9 10 | let kata = "Fahru" for (let i = 0; i < kata.length; i++) { console.log(kata[i]) } // output: // F // a // h // r // u |
Boolean
boolean adalah tipe data yang hanya memiliki dua nilai, yakni true dan false dalam huruf kecil.
Berikut ini contoh deklarasi variabel dengan tipe data boolean:
1 2 3 4 | let isLearning = true if (isLearning) { console.log("isLearning = true") } |
Object
Tipe data object pada Javascript merupakan tipe data kompleks yang berisi kumpulan properti (props), setiap properti berisi pasangan key:value.
Berikut ini contoh dari object kosong yang dibuat dengan menggunakan object literal:
Dan ini contoh dari object user dengan propertinya:
1 2 3 4 5 6 | let user = { id: 1, firstName: "Kode", lastName: "Kami", age: 25, } |
Nama properti bisa berupa string dengan kriteria penamaan mengikuti Aturan Penamaan Identifier. Jika suatu hal membuat kita perlu menggunakan nama dengan tanda - seperti first-name, maka kita bisa menulisnya dengan menggunakan tanda kutip 'first-name'.
Jika object memiliki lebih dari sebuah properti maka pisahkan dengan tanda koma (,).
Value dari properti bisa berupa object lain, hal ini disebut dengan nested object. Contoh:
1 2 3 4 5 6 7 8 9 10 11 | let user = { firstName: "Kode", lastName: "Kami", email: "[email protected]", phone: "(408)-555-9999", address: { city: "Banyuwangi", state: "East Java", country: "Indonesia", }, } |
Object user di atas terdiri dari properti firstName, lastName, email, phone, dan address.
Properti address sendiri terdiri dari sebuah object yang didalamnya terdapat properti city, state, dan country.
Cara Akses Properti Object
Terdapat dua cara untuk mengakses properti dari sebuah object. Cara pertama menggunakan format namaObject.namaProperti dan cara kedua menggunakan format array [] contohnya namaObject['namaProperti'].
Contoh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | let user = { firstName: "Kode", lastName: "Kami", email: "[email protected]", phone: "(408)-555-9999", address: { city: "Banyuwangi", state: "East Java", country: "Indonesia", }, } console.log(user.firstName) // output: Kode console.log(user["lastName"]) // output: Kami |
Jika kita ingin mengakses nested object, maka tambahkan titik ataupun akses array lagi seperti ini:
1 2 | console.log(user.address.city) // output: Banyuwangi console.log(user["address"]["country"]) // output: Indonesia |
Error Akses Properti Object
Jika kita mengakses properti yang tidak ada di dalam object, maka akan menghasilkan error undefined tanpa menghentikan jalannya kode.
1 2 | console.log(user.age) // output: undefined console.log(user.email) // output: [email protected] |
namun jika kita mengakses properti nested dari properti lainnya, maka akan menghasilkan error yang menghentikan jalannya kode.
1 2 | console.log(user.age.minutes) // Error undefined console.log(user.email) // kode tidak dijalankan |
Method pada Object
Properti pada object tidak hanya diisi dengan tipe data primitive maupun collection (array dan object), namun juga bisa diisi dengan fungsi. Fungsi yang menjadi value dari properti object dinamakan method.
Cara pemanggilan method dari suatu object sama dengan pemanggilan properti lainnya yakni dengan format sebagai berikut: namaObject.namaMethod().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | let user = { firstName: "Kode", lastName: "Kami", email: "[email protected]", phone: "(408)-555-9999", address: { city: "Banyuwangi", state: "East Java", country: "Indonesia", }, printInfo: function() { console.log(this.firstName, this.lastName, this.email, this.phone) } } // panggil method print user.printInfo() // output: Kode Kami [email protected] (408)-555-9999 |
Pembahasan lebih lanjut mengenai object akan dipublikasikan pada artikel lainnya.