ES6變數的解構賦值

2021-09-16 20:59:02 字數 1740 閱讀 4646

es6允許按照一定模式從陣列和物件中提取值,然後對變數進行賦值,這被稱為解構賦值。

如下:

let [a,b,c,d] = [1,2,3,4]

a // 1

b //2

c //3

d //4

let [e, [[f], g]] = [1 , [[2], 3]];

e //1

f //2

g // 3

如果解構不成功那麼變數的值就是undefined

let  [x,  y, ...z]  =  [2] ;

x //2

y //undefined

z //

如果等號的右邊不是陣列,那麼將會報錯

let [q] = false;

let [r] = nan;

let [s] = null;

let [t] = {}

// false is not iterable

上面的式子都會報錯,因為等號的右邊的值或是轉為物件以後不具備iterator介面,或是本身就不具備iterator介面。

對於set結構也可以使用陣列的解構賦值

let  [x,  y,  z]  = new  set(['a','b','c']);

x // "a"

事實上,只要某種資料結構具有iteterator介面,都可以採用陣列形式的解構賦值。

解構不僅可以用於陣列,還可以用於物件

let  = 

foo // '1'

bar // '2'

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

let  = 

baz //undefined

bas //234

bat //aaa

物件的解構也可以指定預設值

var   =  ;

x // 1

y //5

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

a //"h"

b // "e"

c // "l"

d // "l"

d // "o"

解構賦值時,如果等號右邊是數值或者布林值,則會先轉為物件。

let    =  123 ;

s === number.prototype.tostring

let = true;

b === boolean.prototype.tostring

上面**中,數值和布林值包裝物件隊友tostring屬性,因此解構賦值都能取到值。

函式的引數也可以使用解構賦值

function add([x,y])

add([5,6]) //11

函式引數也可以使用預設值

function test(={})

test() // [4,5]

test() // [1,"6"]

test({}) // [1,2]

test() // [1,2]

es6變數解構賦值

es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。解構賦值在實際開發中可以大量減少我們的 量,並且讓我們的程式結構更清晰。陣列的解構賦值 let a,b 1 2 console.log a 1 console.log b 2 上面的 表示,可以從陣列中提取值,按照位置的物件...

ES6變數解構賦值

es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 es6之前我們申明多個變數需要按照下面的方法 let l a 1 let b 2 let c 3 let d 4 或者 let a 1,b 2,c 3,d 4 現在我們可以更加簡便 let a,b,c,d 1,2,3,4 ...

es6 變數解構賦值

1.陣列的解構賦值 等號兩邊的模式相同,左邊的變數就會被賦予對應的值 預設值 undefined型別只有乙個值,即undefined。當宣告的變數還未被初始化時,變數的預設值為undefined。null型別也只有乙個值,即null。null用來表示尚未存在的物件,常用來表示函式企圖返回乙個不存在的...