ReactJs, var, let dan const

Saya agak bingung dengan penggunaan var, let dan const, adakah yang bisa menjelaskan bagaimana penggunaan dan perbedaan dari masing masing tadi? Terimakasih

avatar rroossyyiidd
@rroossyyiidd

17 Kontribusi 8 Poin

Diperbarui 6 tahun yang lalu

1 Jawaban:

Jawaban Terpilih

semua command tersebut adalah declarative syntax, artinya untuk menyatakan bahwa variable tersebut exist, dengan ataupun tanpa value. ada beberapa perbedaan mendasar dari ketiganya.

pertama, 'var' dan 'let' bisa terdeklarasi tanpa value (undefined), tapi 'const' harus terdeklasari beserta valuenya.

var a; // valid
let b; // valid
const c; // Uncaught SyntaxError: Missing initializer in const declaration

kedua, dalam scope yang sama, 'var' dan 'let' value bisa berubah, 'const' tidak.

//var
var a = 'a';
a = 'AA'; // valid

//let
let b = 'b';
b = 'BB'; // valid

//const
const c = 'c';
c = 'CC'; // Uncaught TypeError: Assignment to constant variable.

ketiga, 'var' masuk ke global scope, 'let' dan 'const' lebih ke block scope

var a = 1;
let b = 2;
const c = 3;

if(true)
{
    var a = 11; // global a berubah
    let b = 22; // muncul variable b baru didalam if block
    const c = 33; // muncul variable c baru didalam if block

    console.log(a); // global a 11
    console.log(b); // block b 22
    console.log(c); // block c 33
}

console.log(a); // global a 11
console.log(b); // global b 2
console.log(c); // global c 3

dari contoh diatas terlihat kalau let dan const di dalam if block tidak merubah global variable yang muncul pertama, sedangkan var merubah global value.

terakhir adalah tentang hoisting, deklarasi 'var' selalu ditempatkan di atas pada saat compile, walaupun kita menaruhnya di bawah. sedangkan 'let' dan 'const' tidak ter hoisting.

a = 5;
console.log(a); // 5
var a;
// script diatas valid karena pada saat compile 'var' terhoisting ke atas sehingga script diatas sama dengan
var a;
a = 5;
console.log(a); // 5

beda dengan 'let' dan 'const', deklarasi keduanya harus sebelum penggunaan

a = 5;
console.log(a); // Uncaught ReferenceError: a is not defined
let a;

b = 5;
console.log(b); // Uncaught ReferenceError: b is not defined
const b; // Uncaught SyntaxError: Missing initializer in const declaration

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban