ES6解構賦值

2021-10-01 10:14:17 字數 3945 閱讀 1865

陣列解構賦值

物件解構賦值

字串解構賦值

數值和布林值解構賦值

set解構賦值

函式引數解構賦值

iterator解構賦值

使用括號

用途解構賦值是對賦值運算子的擴充套件。

解構賦值允許你使用類似陣列或物件字面量的語法將陣列和物件的屬性賦給各種變數。

解構賦值的規則是,只要等號右邊的值不是物件或陣列,就先將其轉為物件。

es6內部使用嚴格相等運算子』===』,判斷乙個位置是否有值。

所以,右側陣列成員不嚴格等於undefined,預設值是不會生效的。

右側為null,也會賦值為null。

//預設值 場景:變數交換

陣列解構賦值語法的一般形式為

[ variable1, variable2, …, variablen ] = array;

或者使用es6的語法:[…rest] = array;

等號的右邊必須是陣列。

如果解構不成功,變數的值就等於undefined。

//...rest轉為陣列

變數必須與屬性同名。

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

為單個屬性名賦值。

//示例3:

//物件賦值=;

console.

log(

'a:'

,a,' b:'

,b);

//a: 1 b: 2};

c =;//找不到對應的同名屬性

console.

log(

'c:'

,c);

//a is not defined}=

,b:2};

//找不到對應的同名屬性

console.

log(

'a:'

,a);

//a a:

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

console.

log(

'c:'

,c,'d:'

,c);

//c: 1 d: 1};

let

= c;

console.

log(

'a:'

,a,' b:'

,b);

//a: 1 b: 2

}//let 重複定義=;

// syntaxerror: duplicate declaration "foo"

let baz;

let =;

// syntaxerror: duplicate declaration "baz"

}//解析器會將起首的大括號,理解成乙個**塊,而不是賦值語句。=)

;//成功 塊作用域

let baz;(=

);//成功 塊作用域

}

]}

;//前端對應獲取值,賦值給ftitle 和 ctitle。

let ]}

= metadate;

console.

log(ftitle, ctitle)

;}

//陣列賦值

//物件返回長度

='hello'

; console.

log(len)

// 5

}

=123

; s ==

= number.prototype.tostring // true

//s() number.prototype.tostring requires that 'this' be a number,意味著直接轉為包裝類了。

//true 轉為boolen

let

=true

; s ==

= boolean.prototype.tostring // true

}

//示例1

add([1

,2])

;// 3

//[x,y] = [1, 2]

}//示例2

//示例3,配合預設使用

//x y不傳是0

//什麼都不傳預設是{}

function move(=

)move()

;// [3, 8]

move()

;// [3, 0]

move()

;// [0, 0]

move()

;// [0, 0]

}

資料結構具有 iterator 介面,都可以採用陣列形式的解構賦值。

};

//建立fibs物件例項

//a = fibs().next().value;

//其中:fibs().next()返回既iterator返回值。

var [a, b, c, d, e, f]

=fibs()

; console.

log(a, b, c, d, e, f)

// 0 1 1 2 3 5

}

賦值語句的非模式部分,可以使用圓括號。

[

(b)]=[

3];// 正確 b賦值(=

);// 正確 d是賦值

[(parseint.prop)]=

[3];

// 正確 (parseint.prop)整體賦值

let x =1;

let y =2;

[x, y]

=[y, x]

;

// 返回乙個陣列

function example()

let [a, b, c]

=example()

;// 返回乙個物件

function example()

;}let

=example()

;

// 引數是一組有次序的值,有序用陣列

function f

([x, y, z])f

([1,

2,3]

);// 引數是一組無次序的值,無序用物件

function f()

f();

jquery.ajax = function (url,

, cache =

true

, complete = function (),

crossdomain =

false

, global =

true

,// ... more config}=

);

//[key, value]

for(let [key, value] of map)

const

=require

("source-map");

//"source-map"丟擲來的是物件

ES6 解構賦值

陣列的解構賦值 let a,b 12,13 let a,b,c d 13,15,16 let a,b c 78,12 23 let x,y 1,3,5 x 1,y 3 let x,y,z a x a,y undefined z let h,b 1,2,3,4 1,2,3,4 預設值 let x tr...

ES6解構賦值

一 基本用法 解構 destructuring 按照一定的模式,從陣列或者物件中提取值,對變數進行賦值。let par1,par2,par3 1,2 console.log par1,par2,par3 1 2 不完全解構時par3對值為undefined 解構賦值允許指定變數對預設值。let pa...

es6解構賦值

coding changes the world accumulating makes yourself 主要從三個方面講述 陣列式的解構賦值 物件式的解構賦值 函式中的解構賦值 preface 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...