摘要:變量的解構(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
摘要:阮一峰老師開源作品。書上的示例代碼可以通過在線網(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ì)象也不同:在瀏覽...
摘要:與也是用來聲明變量,但是不同于,個(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定義的...
摘要:注本文的大部分代碼示例來自書籍編程從入門到實(shí)踐。一變量命名變量名只能包含字母數(shù)字和下劃線。要在遍歷列表的同時(shí)對(duì)其進(jìn)行修改,可使用循環(huán)。四用戶輸入函數(shù)讓程序暫停運(yùn)行,等待用戶輸入一些文本。 注: 本文的大部分代碼示例來自書籍《Python編程:從入門到實(shí)踐》。 一、變量: 命名:(1)變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭(2)變量名不能包含空格,...
摘要:原文地址一個(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 ...
摘要:原文地址一個(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 ...
閱讀 511·2023-04-26 00:33
閱讀 3538·2021-11-24 09:39
閱讀 2899·2021-09-22 15:34
閱讀 2316·2019-08-23 18:07
閱讀 2912·2019-08-23 18:04
閱讀 3694·2019-08-23 16:06
閱讀 2893·2019-08-23 15:27
閱讀 1614·2019-08-23 14:32