ES6的 結構賦值----簡單demo
<script type="text/javascript">
// 解構賦值
{
let [a,b,c] = [1,2,3];
console.log(a,b,c); //1 2 3
}
//巢狀
{
let [a,[b,c,[d,e,f]]] = [1,[2,3,[4,5,6]]];
console.log(a,b,c,d,e,f); //1 2 3 4 5 6
}
// ... (三點運算子)
// 剩餘運算子,聲譽的部分放在陣列中賦值
{
let [a,...b] = [1,2,3,4,5];
// console.log(a,b[3]);
let [c,d,e,f] = b;
console.log(a+"|"+b+"|"+c,d,e,f); //1 | 2,3,4,5 | 2 3 4 5
// console.log(a);
// console.log(b);
// console.log(c,d,e,f);
}
// 展開運算子,
{
let a = [1,2,3,4,5];
let b = [0,...a]
console.log(b); // (6) [0, 1, 2, 3, 4, 5]
}
// 結構不成功
{
let [a,b,c] = [1,2];
console.log(a,b,c);//c = undefined(不會報錯)
}
//不完全解構
{
let [a,b,c] = [1,2,3,4,5];
console.log(a,b,c);// 1 2 3 4,5 還有沒有解構
}
//允許預設值
//必須 ===undefined 時才會使用預設值,用 ‘=’設定預設值,預設值可以使用變數,但是變數必須是被宣告過的==>注意解構的執行順序。
{
let [a=1,b=a,c] = [,,3];
console.log(a,b,c); // 1 1 3
}
//物件(鍵值對)的解構
//與陣列的用法一樣
{
let user = {
name:"栓單",
age:"21"
}
// name 屬性,a 變數 ,age 屬性 b 變數
// 等同於 {
// let {name,age} = {name:"栓單",age:"21"} //簡寫:屬性名和變數名相同;
// }
let {name:a,age:b} = user; //正常寫法 屬性:變數;
console.log(a,b); //栓單 21
}
// 物件的 巢狀
{
let {a,b,c} = {
a:"1",
b:{aa:"aa"},
c:"3"
};
console.log(a, b.aa ,c); //1 aa 3
}
// 變數的交換
// Es5的寫法:
// {
// var a = 1; var b = 2;
// console.log(a,b) // 1 2
// //變數交換 -- 需要再宣告一個空的媒介
// var c = null;
// //進行交換
// c = a ; a = b ; b = c ;
// console.log(a,b) // 2 1
// //很神奇吧!就是程式碼有點多,在Es6裡三行就搞定。
// }
// Es6的寫法:
{
let a = 1;
let b = 2;
let c = 3;
console.log(a,b,c); //1 2
//a,b進行交換
[a,b,c] = [c,b,a];
console.log(a,b,c); //2 1
}
// 函式的返回值
{
function fn(){
return {
name:"栓單",
age:"21",
timer:"2018",
}
}
// 第一種寫法==>直接賦值個給物件
let {name,age,timer} = fn();
console.log(name,age,timer); //栓單 21 2018
// 第二種寫法==>賦值給變數,在呼叫變數(物件.鍵 得出 值)
user = fn();
console.log(user.name,user.age,user.timer);//栓單 21 2018
}
// json 資料的解構
{
// 模擬資料
let obj = {
title:"標題",
info:"扒拉扒拉扒拉",
spans:[
{
s_title:"標籤1",
s_info:"標籤1-巴拉巴"
},
{
s_title:"標籤2",
s_info:"標籤2-巴拉巴"
}
],
}
//結構資料
let {title,info,spans} = obj;
console.log(title,info,spans);//標題 扒拉扒拉扒拉 (2) [{…}, {…}]
console.log(spans[0]); // let.html:146 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
console.log(spans[1]); // let.html:147 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
let [a,b] = spans;
console.log(a);// let.html:150 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
console.log(b);// let.html:151 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
}
</script>
<script type="text/javascript">
// 解構賦值
{
let [a,b,c] = [1,2,3];
console.log(a,b,c); //1 2 3
}
//巢狀
{
let [a,[b,c,[d,e,f]]] = [1,[2,3,[4,5,6]]];
console.log(a,b,c,d,e,f); //1 2 3 4 5 6
}
// ... (三點運算子)
// 剩餘運算子,聲譽的部分放在陣列中賦值
{
let [a,...b] = [1,2,3,4,5];
// console.log(a,b[3]);
let [c,d,e,f] = b;
console.log(a+"|"+b+"|"+c,d,e,f); //1 | 2,3,4,5 | 2 3 4 5
// console.log(a);
// console.log(b);
// console.log(c,d,e,f);
}
// 展開運算子,
{
let a = [1,2,3,4,5];
let b = [0,...a]
console.log(b); // (6) [0, 1, 2, 3, 4, 5]
}
// 結構不成功
{
let [a,b,c] = [1,2];
console.log(a,b,c);//c = undefined(不會報錯)
}
//不完全解構
{
let [a,b,c] = [1,2,3,4,5];
console.log(a,b,c);// 1 2 3 4,5 還有沒有解構
}
//允許預設值
//必須 ===undefined 時才會使用預設值,用 ‘=’設定預設值,預設值可以使用變數,但是變數必須是被宣告過的==>注意解構的執行順序。
{
let [a=1,b=a,c] = [,,3];
console.log(a,b,c); // 1 1 3
}
//物件(鍵值對)的解構
//與陣列的用法一樣
{
let user = {
name:"栓單",
age:"21"
}
// name 屬性,a 變數 ,age 屬性 b 變數
// 等同於 {
// let {name,age} = {name:"栓單",age:"21"} //簡寫:屬性名和變數名相同;
// }
let {name:a,age:b} = user; //正常寫法 屬性:變數;
console.log(a,b); //栓單 21
}
// 物件的 巢狀
{
let {a,b,c} = {
a:"1",
b:{aa:"aa"},
c:"3"
};
console.log(a, b.aa ,c); //1 aa 3
}
// 變數的交換
// Es5的寫法:
// {
// var a = 1; var b = 2;
// console.log(a,b) // 1 2
// //變數交換 -- 需要再宣告一個空的媒介
// var c = null;
// //進行交換
// c = a ; a = b ; b = c ;
// console.log(a,b) // 2 1
// //很神奇吧!就是程式碼有點多,在Es6裡三行就搞定。
// }
// Es6的寫法:
{
let a = 1;
let b = 2;
let c = 3;
console.log(a,b,c); //1 2
//a,b進行交換
[a,b,c] = [c,b,a];
console.log(a,b,c); //2 1
}
// 函式的返回值
{
function fn(){
return {
name:"栓單",
age:"21",
timer:"2018",
}
}
// 第一種寫法==>直接賦值個給物件
let {name,age,timer} = fn();
console.log(name,age,timer); //栓單 21 2018
// 第二種寫法==>賦值給變數,在呼叫變數(物件.鍵 得出 值)
user = fn();
console.log(user.name,user.age,user.timer);//栓單 21 2018
}
// json 資料的解構
{
// 模擬資料
let obj = {
title:"標題",
info:"扒拉扒拉扒拉",
spans:[
{
s_title:"標籤1",
s_info:"標籤1-巴拉巴"
},
{
s_title:"標籤2",
s_info:"標籤2-巴拉巴"
}
],
}
//結構資料
let {title,info,spans} = obj;
console.log(title,info,spans);//標題 扒拉扒拉扒拉 (2) [{…}, {…}]
console.log(spans[0]); // let.html:146 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
console.log(spans[1]); // let.html:147 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
let [a,b] = spans;
console.log(a);// let.html:150 {s_title: "標籤1", s_info: "標籤1-巴拉巴"}
console.log(b);// let.html:151 {s_title: "標籤2", s_info: "標籤2-巴拉巴"}
}
</script>
瞭解更多;
原創地址:https://blog.csdn.net/china_dou
轉載請註明出處~