国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ECMAScript 6入門讀書筆記二

wawor4827 / 3272人閱讀

摘要:變量的解構(gòu)賦值更加便利的從匿名對(duì)象或者數(shù)組中,對(duì)變量進(jìn)行賦值數(shù)組的解構(gòu)賦值基本樣式,右邊數(shù)據(jù)類型必須是可迭代的類型。

變量的解構(gòu)賦值

更加便利的從匿名對(duì)象或者數(shù)組中,對(duì)變量進(jìn)行賦值;

數(shù)組的解構(gòu)賦值

基本樣式,右邊數(shù)據(jù)類型必須是可迭代的類型。

let a = 1,
    b = 2,
    c = 3;
//等價(jià)于   
//let [a, b, c] = [1, 2, 3];

對(duì)于let [a, b, c] = [1, 2, 3];就是按照[, , ,]這樣的模式一一對(duì)abc進(jìn)行賦值
對(duì)于數(shù)組類型的模式匹配取值還算簡單的,比較容易

完全解構(gòu)

let [a, [b, [c, d], e]] =[1, [2, [3, 4], 5]];  
let [a, , b] = [1, ,3];
let [,,...c] = [1, 2, 3, 4];  
//...是將數(shù)組解構(gòu)成一串用逗號(hào)分割的參數(shù) ; c = [3, 4]

不完全解構(gòu)

let [c] = [];     //c = undefined
let [a, b] = [1]; //b = undefined

解構(gòu)報(bào)錯(cuò),要么不能轉(zhuǎn)成對(duì)象,要么轉(zhuǎn)了也不可迭代
原生可迭代的類型有:Array,Map,Set,String,TypedArray,函數(shù)的arguments對(duì)象,NodeList對(duì)象

let [a, b] = "1234"; //a = 1; b = 2

//或者undefined,NaN,false,1,null 這些都不行
let [a] = {a : 2}; //報(bào)錯(cuò) {a : 2}is not iterable

設(shè)置默認(rèn)值
用來對(duì)不匹配成功的變量賦初始值

let [a = 123] = [];      //a = 123
let [c, d = 123] = [1]   //d = 123
let [b = 123] = [1];     //a = 1

上面例子說明一點(diǎn):匹配成功時(shí),不使用默認(rèn)值,不成功或者值為undefined時(shí)使用默認(rèn)值

let [d = c] = [1];      //d = 1
let [d = c] = [];       //報(bào)錯(cuò)

上面例子說明兩點(diǎn):1.不能使用未聲明的變量進(jìn)行默認(rèn)值設(shè)定,2.在匹配成功時(shí),引擎是不管它的,要不然就報(bào)錯(cuò)了

對(duì)象的解構(gòu)賦值

個(gè)人理解認(rèn)為,對(duì)象解構(gòu)賦值時(shí),key的模式匹配,對(duì)value變量的賦值,其右邊對(duì)象,可以不是迭代類型(個(gè)人猜測(cè),有待商榷)
基本樣式:

let {a} = {a : 1};   //a = 1;
let {a : c} = {a : 1};   //c = 1;

實(shí)際上它是let {a : a} = {a : 1};key的a是模式匹配,value的a是變量,用于成功后的賦值{a : 1, c : {d : 1}};對(duì)于這樣想要分別取1,{d:1},1這3個(gè)值,怎么寫匹配模式

let {a:a,c:c,c:{d:d}} = {a : 1, c : {d : 1}}; //最簡單繁瑣的

可以簡化一下let {a,c,c:gm2yuyg} = {a : 1, c : {d : 1}};,
同理let {p, p : [h, ay], p : [, {y}]} = {p: ["Hello",{ y: "World" }]};
規(guī)則允許左邊不存放任何變量名,也就是為空對(duì)象,沒有意義但又是合法的表達(dá)式

({} = [true, false]);
({} = "abc");
({} = []);

非變量聲明的解構(gòu)必需用括號(hào)括起來,不然會(huì)報(bào)錯(cuò),如上是表達(dá)式,括起來就不會(huì)報(bào)錯(cuò)

包裝類對(duì)象的解構(gòu)
let {1:a} = "zxc";
let {toString: b} = "qwe";
console.log(b === String.prototype.toString);

將"zxc" => new String("zxc"),再將其解構(gòu)

函數(shù)參數(shù)的解構(gòu)
function move({x = 0, y = 0} = {}) {
  return [x, y];
}
move({x:3});  //[3, 0]
move();       //[0, 0]

這個(gè)參數(shù)解構(gòu)有兩個(gè)作用:1.x,y的默認(rèn)值為0,0;2.move()參數(shù)默認(rèn)值為{},所以當(dāng)未輸入時(shí)傳入的實(shí)參為{}
不用于下面的

function move({x, y} = {x: 0,y: 0}) {
  return [x, y];
}
move({x:3})  //[3, undefined]
move();      //[0, 0]

上面例子并沒有對(duì)x,y進(jìn)行默認(rèn)值的設(shè)定,只是對(duì)move(),傳入實(shí)參進(jìn)行了{(lán)x: 0,y: 0}的默認(rèn)值設(shè)定

用途

個(gè)人理解:從類似數(shù)組或者對(duì)象的數(shù)值集合中快速提取自己想要的值
有趣的應(yīng)用就是數(shù)值之間的交換

let a = 1,
    b = 2;
[a, b] = [b, a];
console.log(a,b);

因?yàn)閿?shù)組的解構(gòu)必須按順序來,不像對(duì)象的解構(gòu),按key模式匹配
其他應(yīng)用有待自己對(duì)解構(gòu)更加靈活的應(yīng)用

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98530.html

相關(guān)文章

  • ECMAScript 6 入門讀書筆記

    摘要:阮一峰老師開源作品。書上的示例代碼可以通過在線網(wǎng)站代碼調(diào)試工具調(diào)試。 阮一峰老師開源作品。 書上的示例代碼可以通過 在線網(wǎng)站代碼調(diào)試工具 JS Bin 調(diào)試。 作用域 作用域鏈 每個(gè)變量或函數(shù)通過執(zhí)行環(huán)境 (execution context) 定義了其有權(quán)訪問的其他數(shù)據(jù),決定了他們各自的行為; 全局執(zhí)行環(huán)境是最頂層的執(zhí)行環(huán)境,根據(jù)宿主環(huán)境的不同,表示全局執(zhí)行環(huán)境的對(duì)象也不同:在瀏覽...

    qieangel2013 評(píng)論0 收藏0
  • ECMAScript 6入門讀書筆記

    摘要:與也是用來聲明變量,但是不同于,個(gè)人理解是它是用來修復(fù)的一些神奇效果,似的變量更加規(guī)范,簡單來說定義的變量就是私有變量,有以下幾點(diǎn)作用聲明的變量只在它所在的代碼塊中生效即它的塊級(jí)作用域中生效對(duì)于循環(huán)的塊級(jí)作用域,當(dāng)聲明循環(huán)體時(shí),有兩個(gè)特點(diǎn)聲 let與const let 也是用來聲明變量,但是不同于var,個(gè)人理解是它是用來修復(fù)var的一些神奇效果,似的變量更加規(guī)范,簡單來說let定義的...

    ShowerSun 評(píng)論0 收藏0
  • python基礎(chǔ)(《Python編程:從入門到實(shí)踐》讀書筆記

    摘要:注本文的大部分代碼示例來自書籍編程從入門到實(shí)踐。一變量命名變量名只能包含字母數(shù)字和下劃線。要在遍歷列表的同時(shí)對(duì)其進(jìn)行修改,可使用循環(huán)。四用戶輸入函數(shù)讓程序暫停運(yùn)行,等待用戶輸入一些文本。 注: 本文的大部分代碼示例來自書籍《Python編程:從入門到實(shí)踐》。 一、變量: 命名:(1)變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭(2)變量名不能包含空格,...

    springDevBird 評(píng)論0 收藏0
  • 前端補(bǔ)集 - 收藏集 - 掘金

    摘要:原文地址一個(gè)非常適合入門學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫的新聞。深入淺出讀書筆記知乎專欄前端專欄前端掘金去年的一篇老文章,恰好今天專欄開通,遷移過來。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說起 - 掘金修訂說明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過 6W,在知乎、掘金、cnodejs ...

    YorkChen 評(píng)論0 收藏0
  • 前端補(bǔ)集 - 收藏集 - 掘金

    摘要:原文地址一個(gè)非常適合入門學(xué)習(xí)的博客項(xiàng)目前端掘金一個(gè)非常適合入門學(xué)習(xí)的項(xiàng)目,代碼清晰結(jié)構(gòu)合理新聞前端掘金介紹一個(gè)由編寫的新聞。深入淺出讀書筆記知乎專欄前端專欄前端掘金去年的一篇老文章,恰好今天專欄開通,遷移過來。 破解前端面試(80% 應(yīng)聘者不及格系列):從閉包說起 - 掘金修訂說明:發(fā)布《80% 應(yīng)聘者都不及格的 JS 面試題》之后,全網(wǎng)閱讀量超過 6W,在知乎、掘金、cnodejs ...

    AbnerMing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<