變量的結(jié)構(gòu)賦值
數(shù)組的解構(gòu)賦值
- ES6允許按照一定模式漠吻,從數(shù)組和對象中提取值擅耽,對變量進行賦值,這被稱為解構(gòu)速蕊。
let [a,b,c] = [1,2,3];
-
不完全解構(gòu):
- let[bar,foo] = [1];
- let[x,y] = [1,2,3];
如果等號的右邊不是數(shù)組嫂丙,那么將會報錯,對于Set解構(gòu)规哲,也可以使用數(shù)組的解構(gòu)賦值跟啤。
let [x,y,z] = new Set(['a','b','c']);
- 解構(gòu)賦值允許指定默認值。
let[foo = true] = [];
foo //true
let[x,y = 'b'] = ['a'];//x='a',y='b'
let[x,y = 'b'] = ['a',undefined];//x='a',y='b'
對象的解構(gòu)賦值
- 解構(gòu)不僅可以用于數(shù)組唉锌,還可以用于對象隅肥。
let {foo , bar} = {foo:"aaa",bar:"bbb"};
字符串的解構(gòu)賦值
- 字符串也可以解構(gòu)賦值。這是因為此時袄简,字符串被轉(zhuǎn)換成了一個類似數(shù)組的對象腥放。
const[a,b,c,d,e] = 'hello';
a // 'h'
b // 'e'
c // 'l'
d // 'l'
e // 'o'
數(shù)值和布爾值的解構(gòu)賦值
- 解構(gòu)賦值時,如果等號右邊是數(shù)值和布爾值绿语,則會先轉(zhuǎn)為對象秃症。
let {toString: s} = 123;
s === Number.prototyoe.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true
函數(shù)參數(shù)的解構(gòu)賦值
- 函數(shù)的參數(shù)也可以使用解構(gòu)賦值
function add([x,y]){
return x+y;
}
add([1,2]);//3
解構(gòu)賦值的用途
1.交換變量的值
let x = 1;
let y = 2;
[x,y] = [y,x];
2.從函數(shù)返回多個值
函數(shù)只能返回一個值候址,如果要返回多個值,只能將它們放在數(shù)組或?qū)ο罄锓祷刂指獭S辛私鈽?gòu)賦值宗雇,取出這些值就非常方便。
//返回一個數(shù)組
function example(){
return[1,2,3];
}
let [a,b,c] = example();
//返回一個對象
function example(){
return{
foo:1,
bar:2
};
}
let {foo , bar} = example();
3.函數(shù)參數(shù)的定義
解構(gòu)賦值可以方便地將一組參數(shù)與變量名對應(yīng)起來莹规。
//參數(shù)是一組有次序的值
function f([x,y,z]){...}
f([1,2,3]);
//參數(shù)是一組無次序的值
function f({x,y,z}){...}
f({z:3,y:2,x:1});
4.提取JSON數(shù)據(jù)
解構(gòu)賦值對提取JSON對象中的數(shù)據(jù),尤其有用泌神。
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]
5.函數(shù)參數(shù)的默認值
jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
} = {}) {
// ... do stuff
};
6.遍歷Map結(jié)構(gòu)
7.輸入模塊的指定方法