# Jenis-Jenis Data Primitif di JavaScript

Pada artikel ini, kita akan coba memahami tipe data primitif pada `Javascript`. Artikel ini untuk pemula.

Nilai atau tipe data primitif adalah sesuatu yang bukan objek dan tidak memiliki metode yang terkait dengannya. Dengan kata lain, tipe data primitif adalah data sederhana tanpa metode dan properti tambahan.

Ada 7 tipe data primitif pada `Javascript`.

1. `boolean`
    
2. `null`
    
3. `undefined`
    
4. `number`
    
5. `string`
    
6. `symbol`
    
7. `bigint`
    

Kita dapat menggunakan operator `typeof(value)` untuk mengetahui tipe data dari nilai yang diberikan.

**Contoh**:

```javascript
typeof 1;         // number
typeof "dev.to";  // string
typeof null;      // object
typeof undefined; // undefined
typeof true;      // boolean
typeof 1n;        // bigint
let sym = Symbol("key");
typeof key;       // symbol
```

1. ## `boolean`
    
    `boolean` adalah tipe data yang hanya memiliki dua nilai, yaitu, `true` dan `false`.  
      
    Nilai `boolean` biasanya digunakan dalam operator perbandingan dan kondisi.  
      
    Kita dapat menggunakan konstruktor `Boolean()` untuk membuat objek `boolean`. Namun, ini umumnya dianggap praktik yang buruk dan harus dihindari.  
      
    **Contoh**: 
    
    ```javascript
    let x = new Boolean(true);
    typeof  x;  // boolean
    ```
    
    Jangan bingung antara tipe primitif `boolean` dengan objek `Boolean`.
    
2. ## `null`
    
    Nilai `null` mewakili ketiadaan objek.  
      
    **Contoh**:
    
    ```javascript
    let boo = null;
    typeof boo; //null
    ```
    
    Pada contoh diatas, variable `boo` ada tetapi tidak memiliki nilai yang terkait dengannya.
    
3. ## `undefined`
    
    `undefined` adalah nilai yang otomatis diberikan ke variabel yang telah dideklarasikan.  
      
    **Contoh**:
    
    ```javascript
    var x;
    typeof x;  // undefined
    ```
    
4. ## `number`
    
    Tipe data `number` berisi nilai numberik. Kamu dapat mendefinisikan nilai positif, desimal dan negatif. `number` juga memiliki nalai pisitif dan negatif yang tidak terbatas.  
      
    **Contoh**:
    
    ```javascript
    var num = 123;
    typeof num;   // number
    // using constructor
    var boo = new Number(123)
    typeof boo;   // object
    typeof boo.valueOf();  // number
    ```
    
5. ## `string`
    
    `string` adalah tipe data yang terdiri dari karakter atau urutan karakter dalam tanda kutip tunggal (`'contoh'`) atau tanda kutip ganda (`"contoh"`) atau dalam kutip belakang (`` `contoh` ``).  
      
    Kita bisa menggunakan fungsi konstruktor `String()` untuk membuat sebuah objek bertipe `string`.  
      
    **Contoh**:
    
    ```javascript
    let string1 = "Double quotes";
    let string2 = 'Single quotes';
    typeof string1;  // string
    let string4 = new String("string constuctor");
    typeof string4;  // object
    typeof string4.valueOf();  // stirng
    ```
    
6. ## `symbol`
    
    `symbol` adalah tipe data yang memberikan nilai unik dan anonim yang bisa digunakan sebagai properti objek.  
      
    `symbol` diperkenalkan pada `ES6`.  
      
    symbol tidak memiliki konstruktor jadi kita tidak bisa membuat objek `symbol` menggunakan kata kunci `new`.  
      
    **Contoh**:
    
    ```javascript
    let sym1  = new Symbol('a'); // TypeError
    let sym2 = Symbol('a');  // symbol is created
    let sym3 = Symbol('a');  // symbol is created
    sym2  === sym3;  // false
    ```
    
    Baris terakhir pada contoh diatas bernilai `false` karena antara `sym2` dan `sym3` adalah bernilai unik.  
      
    Lihat [halaman ini](https://developer.mozilla.org/en-US/docs/Glossary/Symbol) untuk mengetahui lebih lanjut tentang `symbol`.
    
7. ## `bigint`
    
    Tipe data primitif `bigint` diperkenalkan pada `ES10`.  
      
    Sebelum `ES10`, nilai maksimal angka pada `Javascript` adalah `9007199254740991` atau `Number.MAX_SAFE_INTEGER`. Untuk mengatasi batasan ini, `bigint` diperkenalkan.  
      
    **Contoh**:
    
    ```javascript
    let x = 1;
    let y = 1n;
    typeof x;  // number
    typeof y;  // bigint
    ```
    

Terimakasih telah membaca artikel ini, harap berikan masukan yang membangun.

**Sumber**:

* [https://developer.mozilla.org/en-US/docs/Glossary/Primitive](https://developer.mozilla.org/en-US/docs/Glossary/Primitive)
    
* [https://dev.to/vineethsagar/introduction-to-primitive-types-in-javascript-575o](https://dev.to/vineethsagar/introduction-to-primitive-types-in-javascript-575o)
