es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(destructuring)
基本
let
[a, b, c]=[
1,2,
3];// a = 1
// b = 2
// c = 3
可巢狀
let
[a,[
[b], c]]=
[1,[
[2],
3]];
// a = 1
// b = 2
// c = 3
可忽略
let
[a,, b]=[
1,2,
3];// a = 1
// b = 3
不完全解構
let
[a =
1, b]=[
];// a = 1, b = undefined
剩餘運算子
let
[a,...b]=[
1,2,
3];//a = 1
//b = [2, 3]
字串
在陣列的解構中,解構的目標若為可遍歷物件,皆可進行解構賦值。可遍歷物件即實現 iterator 介面的資料。
let
[a, b, c, d, e]
='hello'
;// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
當解構模式有匹配結果,且匹配結果是 undefined 時,會觸發預設值作為返回結果。
let
[a =
3, b = a]=[
];// a = 3, b = 3
let[a =
3, b = a]=[
1];// a = 1, b = 1
let[a =
3, b = a]=[
1,2]
;// a = 1, b = 2
基本
let=;
// foo = 'aaa'
// bar = 'bbb'
let=
;//變數名foo,屬性名baz
// foo = 'ddd'
可巢狀
let obj =]}
;let]}
= obj;
// x = 'hello'
// y = 'world'
可忽略
let obj =]}
;let]}
= obj;
// x = 'hello'
不完全解構
let obj =]}
;let
, x ]
}= obj;
// x = undefined
// y = 'world'
剩餘運算子
let=;
// a = 10
// b = 20
// rest =
var=;
x // 3
var=
;x // 1
y // 5
var=
;y // 3
var=
;y // 5
var=
;msg // "something went wrong"
let x =1;
let y =2;
[x, y]
=[y, x]
;
函式只能返回乙個值,如果要返回多個值,只能將它們放在陣列或物件裡返回.
// 返回乙個陣列
function
example()
let[a, b, c]
=example()
;// 返回乙個物件
function
example()
;}let=
example()
;
解構賦值可以方便地將一組引數與變數名對應起來。
// 引數是一組有次序的值
functionf(
[x, y, z])f
([1,
2,3]
);// 引數是一組無次序的值
functionf(
)f()
;
解構賦值對提取 json 物件中的資料,尤其有用
let jsondata =
;let
= jsondata;
console.
log(id, status, number)
;// 42, "ok", [867, 5309]
指定引數的預設值,就避免了在函式體內部再寫var foo = config.foo || 『default foo』;這樣的語句。
jquery.
ajax
=function
(url,
, cache =
true
,complete
=function()
, crossdomain =
false
, global =
true
,// ... more config}=
);
任何部署了 iterator 介面的物件,都可以用for…of迴圈遍歷。map 結構原生支援 iterator 介面,配合變數的解構賦值,獲取鍵名和鍵值就非常方便。
const map =
newmap()
;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)
載入模組時,往往需要指定輸入哪些方法。
const
=require
("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 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...