1. 程式人生 > 實用技巧 >ES6中let、const的區別及變數的解構賦值操作方法例項分析

ES6中let、const的區別及變數的解構賦值操作方法例項分析

本文例項講述了ES6中let、const的區別及變數的解構賦值操作方法。分享給大家供大家參考,具體如下:

宣告:本文內容依照阮一峰老師ECMAScript 6 入門一書所總結。

let和const

相同點

  1. 都存在塊級作用域
  2. 都不存在變數宣告提升
  3. 都會造成“暫時性死區”
  4. 在一個作用域下不可重複宣告

不同點

  1. const一旦宣告必須立即賦值
  2. const宣告的變數指向的記憶體地址不得改動。

變數解構賦值

陣列的解構賦值

解構成功

let [a, b, c] = [1, 2, 3];

解構不成功

let [foo] = [];

不完全解構

let [x, y] = [1, 2, 3];

預設值

let [foo = true] = [];

解構條件:只要某種資料結構具有 Iterator 介面,都可以採用陣列形式的解構賦值。

物件的解構賦值

與陣列的區別:物件的解構與陣列有一個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。

應用:可以很方便地將現有物件的方法,賦值到某個變數。

let { log, sin, cos } = Math;

字串的解構賦值

原理:字串被轉換成了一個類似陣列的物件。

const [a, b, c, d, e] = 'hello';

類似陣列的物件都有一個length屬性,因此還可以對這個屬性解構賦值。

let {length : len} = 'hello';
len // 5

數值和布林值的解構賦值

let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true

函式引數的解構賦值

[[1, 2], [3, 4]].map(([a, b]) => a + b);
// [ 3, 7 ]

更多關於JavaScript相關內容可檢視本站專題:《javascript面向物件入門教程》、《JavaScript錯誤與除錯技巧總結》、《JavaScript資料結構與演算法技巧總結》、《JavaScript遍歷演算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程式設計有所幫助。