1. 程式人生 > >(es6學習 )var let const的區別

(es6學習 )var let const的區別

com spa ann 作用域 function access 是我 before ati

let 與 var 的區別

var做的聲明在全局裏都有效 例如:

for(var i=0;i<3;i++){
  var a= 1;
}
console.log(a); //1

在for循環裏 變量a泄漏到了全局 但是我們用let 來申聲明

for(var i=0;i<3;i++){
  let a= 1;
}
console.log(a); //報錯 a is not defined

用let聲明的變量只在聲明的那個函數作用域裏有用

let聲明之前聲明的變量都不可用狀態,這個被稱為"暫時性死區"

let 與const 不存在變量提升

// console.log(a); Cannot access ‘a‘ before initialization

let a

let不允許在同一個作用域重復聲明

// 報錯

function () {

  let a = 10;

  var a = 1;

}

// 報錯

function () {

  let a = 10;

  let a = 1;

}

const 是申明一個常量並且被聲明的常量不可更改;

例如 : const a = 0;

a = 1 // 報錯 Assignment to constant variable.

但是 const a = {

    x:0

  }

可以操作 a.x = 1;

console.log(a); //{x:1}

但是不可操作

a = {

  x:1

}

// 報錯 Assignment to constant variable.

並且const聲明必須馬上賦值

const的作用域與let相同都只作用於聲明的函數內

(es6學習 )var let const的區別