ES6 變數的解構賦值 核心要點筆記

2022-05-03 15:27:33 字數 2656 閱讀 2759

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

1,陣列的解構賦值

以下這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。如果解構不成功,變數的值就等於undefined。

let [foo, [[bar], baz]] = [1, [[2], 3]];

foo //1

bar //

2baz //

3let [ , , third] = ["foo", "bar", "baz"];

third

//"baz"

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

x //

1y //

3let [head, ...tail] = [1, 2, 3, 4];

head //1

tail //

[2, 3, 4]

let [x, y, ...z] = ['a'];

x //

"a"y //

undefined

z //

另一種情況是不完全解構,即等號左邊的模式,只匹配一部分的等號右邊的陣列。這種情況下,解構依然可以成功。

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

x //

1y //

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

a //

1b //

2d //

4

預設值:解構賦值允許指定預設值。

注意兩點:1,只有當乙個陣列成員嚴格等於undefined,預設值才會生效;2,如果預設值是乙個表示式,那麼這個表示式是惰性求值的,即只有在用到的時候,才會求值。

2,物件的解構賦值

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

let  = ;

foo

//"aaa"

bar //

"bbb"

let = ;

baz

//undefined

物件的解構賦值的內部機制,是先找到同名屬性,然後再賦給對應的變數。真正被賦值的是後者,而不是前者。

注意,物件的解構賦值可以取到繼承的屬性。

const obj1 ={};

const obj2 = ;

object.setprototypeof(obj1, obj2);

const =obj1;

foo

//"bar"

其它方面的解構賦值不一一枚舉,下面備註下解構賦值的常見用途

3. 用途

(1)交換變數的值

let x = 1;

let y = 2;

[x, y] = [y, x];

(2)從函式返回多個值

//

返回乙個陣列

function

example()

let [a, b, c] =example();

//返回乙個物件

function

example() ;

}let = example();

(3)函式引數的定義

//

引數是一組有次序的值

function

f([x, y, z])

f([1, 2, 3]);

//引數是一組無次序的值

function

f()

f();

(4)提取json資料

let jsondata =;

let =jsondata;

console.log(id, status, number);

//42, "ok", [867, 5309]

(5)函式引數的預設值

jquery.ajax = function

(url, ,

cache = true

, complete = function

() {},

crossdomain = false

, global = true,

//... more config

} ={}) ;

(6)遍歷map結構

const map = new

map();

map.set('first', 'hello');

map.set('second', 'world');

for(let [key, value] of map)

//first is hello

//second is world

//獲取鍵名

for(let [key] of map)

//獲取鍵值

for(let [,value] of map)

(7)輸入模組的指定方法

const  = require("source-map");

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用來表示尚未存在的物件,常用來表示函式企圖返回乙個不存在的...