一、陣列解構
**陣列解構,解構出來的值跟陣列下標是一一對應的,如果左邊變數多於右邊陣列,則左邊後面部分變數值為undefined,如果右邊陣列元素個數多於左邊解構變數個數,則左邊變數全都有值,且一一對應
1.簡單解構
let arr = [1, 2, 5];
let [a , b , c] = arr; // a=1, b=2, c=5
2.複雜解構
let [a, [b, [c]], d] = [1, [2, [3]], 4]; // a=1, b=2, c=3, d=4
二、物件解構
**物件解構,鍵名順序不用考慮,只要有對應的鍵名,就能獲取鍵值
1.簡單解構(新定義的變數名與鍵名相同時)
let obj = ;
let = obj; // name:'lucy', age: 18
2.簡單解構(新定義的變數名與物件鍵名不同時,冒號「:」右邊是新定義的變數名,左邊為原物件的鍵名)
let obj = ;
let = obj; //此時 username:『lucy』, userage: 18
3.複雜物件解構
let obj = , , ]
}let = obj;
// console.log(goodsstatus) // 200,
// console.log(goodsid) // 123,
// console.log(resultdata) // [, , ],
三、其他解構
1.字串長度獲取:
(1)、es5字串長度方法:string.length();
(2)、es6字串長度解構:let = string; // 此時length即為字串string的長度值
2.字串解構:將字串解構成乙個陣列,然後賦值:
let [a, b, c] = string; // 將字串中的每個字元拆分,然後像陣列一樣進行解構賦值
例如:let [a, b, c] = "hello"; // a="h", b="e", c="l"
3.函式傳參解構
let arr = [1, 2];
let obj = ;
function test()
test(arr); // a=1, b=2, 函式的引數arr此時被解析成 test([a, b]),但是有個隱患,引數是根據下標順序來的, 如果陣列有多個元素,但是我們只需要其中一些元素,那麼傳參就不行了,所有最好使用物件進行傳參
test(obj); // a=1, b=2 函式test解析成test(),此時引數a, b順序可以隨意打亂,只要物件中有鍵名a、b即可
**函式test(a, b)引數的預設值設定
在es5中,引數預設值設定一般為:a = a || 10;
es6中,可以這樣設定test(a=10, b); // 如果實參沒有傳入引數a時,啟用引數a的預設值,此時引數a=10
ES6學習 解構賦值
解構賦值是對賦值運算子的擴充套件,是一種針對陣列或物件進行模式匹配,對其中變數進行賦值。解構源 解構賦值表示式的右邊部分 解構的目標 解構賦值表示式的左邊部分 注意 左右兩邊,結構格式要保持一致 陣列 let arr 1 2,3 let a,b,c arr console.log a,b,c 1 2...
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...