Mengenal Const pada JavaScript

Pernahkan kamu menemukan deklarasi const pada pemrograman javascript? Jika pernah tahukah kamu apa itu const? bagi pendatang baru tentunya deklarasi const tidaklah mengherankan karena cukup sering ditemukan. Namun bagi kamu yang sudah lama mengenal javascript terutama sebelum ES6 (ECMAScript 2015) dirilis, deklarasi const cukup asing. Const pada javascript adalah deklarasi variable yang dapat bersifat readonly atau statis tidak dapat dirubah nilainya. Deklarasi const didalam block-scoped (ruang lingkup blok) tidak berpengaruh pada definisi const sebelumnya. Block-scope merupakan kode yang berada didalam ruang lingkup blok seperti blok if, try, catch, function, for, switch & case dan sebagainya. Deklarasi const yang bersifat readonly bukan berarti nilai didalamnya tidak dapat dirubah, misalnya object. Berikut ini adalah contoh deklarasi const pada javascript:

Language: javascript
1
2
3
4
5
6
7
8
const name1 = "value1", name2 = "value2";
 
// atau
const name1 = "value1";
const name2 = "value2";
 
// atau
const {name1, name2} = {name1: "value1", name2: "value2"};

 

Aturan deklarasi Const pada JavaScript

1. Deklarasi const yang sama tidak boleh didefinisikan lagi pada scope yang sama

Untuk mendefinisikan const pada scope yang sama harus dengan nama const yang berbeda. Hal ini perlu dilakukan karena jika tidak, akan menghasilkan error. Selain itu, untuk mendefinisikan const dengan nilai atau isi yang sama, juga dapat dilakukan dengan membuat referensi nama const yang berbeda. Berikut ini adalah beberapa contoh definisi const yang sama didalam dan diluar scope.

Language: javascript
1
2
3
const os = "Ubuntu 16.04"; // definisi awal
 
os = "Windows 10"; // tidak diizinkan karena os sudah didefinisikan
Language: javascript
1
2
3
const os = "Ubuntu 16.04"; // definisi awal
 
const os = "Windows 10"; // tidak diizinkan karena os sudah didefinisikan
Language: javascript
1
2
3
4
5
6
7
8
9
const os = "Ubuntu 16.04"; // definisi awal
 
if (typeof os != 'undefined') {
    const os = "Windows 10"; // const os ini berlaku pada blok if saja
    console.log(os); // hasilnya adalah "Windows 10"
}
 
console.log(os); // hasilnya adalah "Ubuntu 16.04" 
// karena const yang berlaku adalah definisi awal
Language: javascript
1
2
3
const os = "Ubuntu 16.04"; // definisi awal
 
const os2 = os; // os2 berisi nilai yang sama dengan os

 

2. Nilai const dapat dirubah selama nilainya tidak bersifat immutable atau kekal

Pada dasarnya variable yang didefinisikan dalam sebuah const bersifat mutlak dan tidak dapat dirubah (Immutable). Akan tetapi hal ini tidak berlaku bagi tipe data object yang tidak di bekukan menggunakan perintah Object.freeze(variable const). Hal ini memiliki keuntungan tersendiri bagi object yang tidak ingin nilainya di ganggu gugat. Seperti definisi konfigurasi ataupun variable yang digunakan sebagai inisial.

Language: javascript
1
2
3
4
5
6
7
8
9
10
11
const os = {
    type: "Linux",
    name: "Ubuntu",
    version: 16.04
};
 
os.type = "Win64";
os.name = "Windows";
os.version = 10;
 
console.log(os.type, os.name, os.version); // Hasilnya adalah "Win64 Windows 10"
Language: javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const os = {
    type: "Linux",
    name: "Ubuntu",
    version: 16.04
};
 
Object.freeze(os); // membuat os bersifat immutable atau kekal
 
os.type = "Win64";
os.name = "Windows";
os.version = 10;
 
console.log(os.type, os.name, os.version); // Hasilnya tetap "Linux Ubuntu 16.04"

 

3. Definisi const hanya berlaku pada block-scoped yang sama

Setiap definisi const pada satu scope nilainya hanya berlaku pada scope tersebut. Jika ada dua atau lebih scope, maka definisi pertama pada scope tersebut akan menjadi master. Misalnya sebuah komputer telah terinstall sistem operasi Windows, maka secara default komputer tersebut tidak dapat menjalankan program yang ada pada sistem operasi Linux kecuali komputer tersebut terinstall Linux.

Language: javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// definisi const os diluar blok if
const os = {
    type: "Win64",
    programs: [".exe", ".bat"],
    canRun: function(app) {
        return this.programs.indexOf(app) >= 0;
    }
};
 
const application = ".sh";
 
if (!os.canRun(application)) {    
    // definisi const os dalam blok if
    const os = {
        type: "Linux",
        programs: [".sh", ".run"],
        canRun: function(app) {
            return this.programs.indexOf(app) >= 0;
        }
    };
 
    console.log(os.canRun(application)); // hasilnya adalah true
}
 
console.log(os.canRun(application)); // hasilnya adalah false
// karena application adalah ".sh"
// sementara sistem operasi-nya tetap win64
 
 

 

4. Variable const tidak dapat dipanggil sebelum const didefinisikan

Setiap kali mengeksekusi atau memanggil nilai const baik diluar maupun didalam scope harus dilakukan setelah const didefinisikan. Jika terdapat deklarasi const setelah pemanggilan nilai const tersebut maka hasilnya tidak terdefinisi atau undefined.

Language: javascript
1
2
3
4
5
6
7
8
9
const application = ".sh";
 
if (application == ".sh") {
    console.log(application); // hasilnya akan error application not defined
    // karena const application baru didefinisikan dibawah ini pada blok if
    // walaupun const application sudah didefinisikan diluar blok if
 
    const application = ".exe";
}

 

Nah sudah paham bukan apa itu const pada javascript? Kesimpulannya mudah, penggunaan const hampir mirip dengan var. Const pada javascript dapat bekerja dengan baik untuk jenis atau tipe data yang bersifat readonly atau statis. Dan yang pasti akan lebih nyaman jika mendifinisikannya hanya sekali. Deklarasi const sangatlah berguna untuk variable yang bersifat kekal atau tidak dapat dirubah.