1.let 和 const 命令

回到目錄

前言

ES 2015 之后新增了一種作用域---塊級作用域
下面用到的 let const 都是在塊級作用域里生效的
例如:

{
  let a = 10;
  var b = 1;
}

a; // ReferenceError: a is not defined.
b; // 1

let 命令

序號 特點 介紹
1 塊級作用域內(nèi)生效 代碼塊{} 內(nèi)聲明的變量只能在{}內(nèi)使用,出去了就沒有了
2 不存在變量提升 所有變量必須先聲明后使用,否則報錯
3 暫時性鎖區(qū) 只要塊級作用域內(nèi)存在 let 命令,它所聲明的變量就“綁定”(binding)這個區(qū)域,不再受外部的影響。
4 不允許重復(fù)聲明 let 不允許在相同作用域內(nèi),重復(fù)聲明同一個變量。

例子

1.塊級作用域內(nèi)生效
{
  let a = 10;
  var b = 1;
}

a; // ReferenceError: a is not defined.
b; // 1
2.不存在變量提升
// var 的情況
console.log(foo); // 輸出undefined
var foo = 2;

// let 的情況
console.log(bar); // 報錯ReferenceError
let bar = 2;
3.暫時性鎖區(qū)
if (true) {
  // TDZ開始
  tmp = "abc"; // ReferenceError
  console.log(tmp); // ReferenceError

  let tmp; // TDZ結(jié)束
  console.log(tmp); // undefined

  tmp = 123;
  console.log(tmp); // 123
}
4.不允許重復(fù)聲明
// 報錯
function func() {
  let a = 10;
  var a = 1;
}

// 報錯
function func() {
  let a = 10;
  let a = 1;
}
function func(arg) {
  let arg; // 報錯
}

function func(arg) {
  {
    let arg; // 不報錯
  }
}

const 命令

基本用法

const 聲明一個只讀的常量。一旦聲明,常量的值就不能改變

特別提示

const 實際上保證的,并不是變量的值不得改動,而是變量指向的那個內(nèi)存地址所保存的數(shù)據(jù)不得改動。對于簡單類型的數(shù)據(jù)(數(shù)值、字符串、布爾值),值就保存在變量指向的那個內(nèi)存地址,因此等同于常量。但對于復(fù)合類型的數(shù)據(jù)(主要是對象和數(shù)組),變量指向的內(nèi)存地址,保存的只是一個指向?qū)嶋H數(shù)據(jù)的指針,const 只能保證這個指針是固定的(即總是指向另一個固定的地址),至于它指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的,就完全不能控制了。因此,將一個對象聲明為常量必須非常小心。

特點

let 具有的特點 const 同樣也具有

序號 特點 解釋
1 聲明之后不能修改變量的值 見特別提示
2 聲明之后必須初始化 特點 1 決定的

例子

1.聲明之后不能修改變量的值
const PI = 3.1415;
PI; // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.
2.聲明之后必須初始化
const foo;
// SyntaxError: Missing initializer in const declaration
3.聲明的是個引用類型
const obj = { a: 15 };
obj.a = 16;
obj.a; // 16

ES6 聲明變量的六種方法

1 2 3 4 5 6
名稱 var function let const import class

回到目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • let命令 let是新增加的語法,該方法的用法和var是一樣的,區(qū)別在于let聲明的變量只能let所在的代碼塊內(nèi)有...
    羊烊羴閱讀 248評論 0 0
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,694評論 0 2
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    卞卞村長L閱讀 680評論 0 0
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 1,039評論 0 0
  • 1、let命令 基本用法 用來聲明變量,類似于var,但是所聲明的變量只在let命令所在的代碼塊內(nèi)有效。for循環(huán)...
    Elevens_regret閱讀 230評論 0 0

友情鏈接更多精彩內(nèi)容