摘要:一數(shù)組解構(gòu)賦值解構(gòu)賦值也可嵌套賦值結(jié)果結(jié)果結(jié)果結(jié)果如果解構(gòu)不成功,變量就會(huì)等于。解構(gòu)賦值允許指定默認(rèn)值。例如數(shù)組對(duì)象如果變量名與屬性名稱不一致必須寫成下面這樣和不允許重新聲明其他同數(shù)組解構(gòu)賦值。
一、數(shù)組解構(gòu)賦值: var a = 1; var b = 2; var c = 3; 解構(gòu)賦值: var [a,b,c] = [1,2,3]; let [a,b,c] = new Set([1,2,3]); 也可嵌套賦值: let [foo,[[bar],[baz]]] = [1,[[2],[3]]]; 結(jié)果: foo // 1; bar // 2; baz // 3; let [,,third] == ["foo","bar","baz"]; 結(jié)果: third // "baz"; let [head, ...tail] = [1,2,3,4]; 結(jié)果: head // 1; tail // [2,3,4]; let [x, y, ...z] = ["a"]; 結(jié)果: x // "a"; y // undefined; z // []; 如果解構(gòu)不成功,變量就會(huì)等于undefined。 var [foo] == []; foo // undefined var [bar,foo] == [1]; foo // undefined 不完全解構(gòu) let [x,y] = [1,2,3]; x // 1 y // 2 let [a,[b],c] = [1,[2,3],4]; a // 1; b // 2; c // 4; 只要某種數(shù)據(jù)解構(gòu)具有迭代接口,都可以采用數(shù)組形式的解構(gòu)賦值。 解構(gòu)賦值允許指定默認(rèn)值。 var [foo = true] = []; foo // true let [x, y="b"] = ["a"]; //x = "a"; y = "b" let [x, y="b"] = ["a",undefined]; //x = "a"; y = "b" ES6內(nèi)部使用(===)完全等于來(lái)判斷一個(gè)位置是否有值,所以,如果一個(gè)數(shù)組成員不嚴(yán)格等于undefined,默認(rèn)值不會(huì)生效。 var [x = 1] = [undefined]; x // 1 var [x = 1] = [null]; x // null 上面如果一個(gè)數(shù)組成員是null,默認(rèn)值就不會(huì)生效,因?yàn)閚ull不嚴(yán)格等于undefined 解構(gòu)賦值的惰性取值: function f(){ return "aaa"}; let [x = f()] = [1]; x // 1 上面代碼中x可以取到值1,所以就不會(huì)執(zhí)行表達(dá)式,所以x = 1,等價(jià)于下面代碼 var x; if([1][0] === undefined){x =f()}else{x = [1][0]} 變賦值之前必須聲明 二、對(duì)象解構(gòu)賦值 var {foo, bar} = {foo:"aaa", bar:"bbb"}; foo // "aaa" bar // "bbb" *對(duì)象的解構(gòu)賦值與數(shù)組一個(gè)重要的不同。數(shù)組必須是按次序排列,變量取值由未知決定; 而對(duì)象的屬性沒次序,變量必須與屬性同名,才能取到正確的值。例如: 數(shù)組:let [x,y] = [1,2]; // x = 1, y = 2 對(duì)象:var {foo, bar} = {bar:"aaa", foo:"bbb"}; // foo = "bbb", bar = "aaa" var {baz} = {bar:"aaa"} // baz = "undefined" 如果變量名與屬性名稱不一致;必須寫成下面這樣: var {foo:baz} = {foo: "aaa", bar: "bbb"}; // baz = "aaa" let和const不允許重新聲明! 其他同數(shù)組解構(gòu)賦值。 三、字符串解構(gòu)賦值 const [a,b,c,d,e] = "hello"; // a="h", b="e"... e="o"; 類似與數(shù)組對(duì)象都有長(zhǎng)度(length屬性);因此還可以對(duì)這個(gè)屬性解構(gòu)賦值 let {length : len} = "hello"; // len = 5 四、數(shù)值和布爾值得解構(gòu)賦值 let {toString: s} = 123; s === Number.prototype.toString // true let {toString: s} = true; s === Boolean.prototype.toString // true 五、函數(shù)參數(shù)的解構(gòu)賦值 function add([x,y]){ return x+y; } add([1,2]); // 3 [[1,2],[3,4]].map(([a,b]) => a+b); // [3,7]; 函數(shù)參數(shù)的解構(gòu)也可以使用,默認(rèn)值 function move({x=0, y=0} = {}){ return [x,y]; } move({x:3,y:8}); // [3,8]; move({x:3}); // [3,0]; move({});//[0,0] move();//[0,0] undefined會(huì)觸發(fā)函數(shù)的默認(rèn)值 [1,undefined,3].map((x = "yes")=>x) // [1,"yes",3]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88124.html
摘要:另外對(duì)于已經(jīng)聲明的變量進(jìn)行解構(gòu)賦值時(shí),要非常小心。因此在行首加,將其強(qiáng)制轉(zhuǎn)化為表達(dá)式執(zhí)行。由于和無(wú)法轉(zhuǎn)為對(duì)象,所以對(duì)它們進(jìn)行解構(gòu)賦值,都會(huì)報(bào)錯(cuò)。 let和const let和const是es6新增的兩個(gè)變量聲明關(guān)鍵字,與var的不同點(diǎn)在于: (1)let和const都是塊級(jí)作用域,在{}內(nèi)有效,這點(diǎn)在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。 (2)使用let和con...
摘要:比如上面展示的情況都是可以聯(lián)合使用的比如對(duì)象的解構(gòu)賦值對(duì)象的解構(gòu)賦值是基于屬性的。當(dāng)給已存在的變量解構(gòu)賦值時(shí),注意加這是由于如果不加會(huì)把左邊看成一個(gè)代碼塊,會(huì)報(bào)錯(cuò)。注意事項(xiàng)數(shù)組的解構(gòu)賦值中,使用的變量必須放在最后。 解構(gòu)賦值 解構(gòu)賦值是一個(gè)聽起來(lái)比較高大上的特性,但按我的理解,它就是一種語(yǔ)法糖。它并沒有賦予js更強(qiáng)大的能力,只是讓賦值操作更加的靈活,效率。 在es6之前,賦值操作需要=...
摘要:前言前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。對(duì)象的解構(gòu)賦值是根據(jù)對(duì)象值進(jìn)行匹配。前言該篇筆記是第二篇 變量的解構(gòu)賦值。這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。解構(gòu)賦值是對(duì)賦值運(yùn)...
摘要:前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。對(duì)象的解構(gòu)賦值是根據(jù)對(duì)象值進(jìn)行匹配。 前言該篇筆記是第二篇 變量的解構(gòu)賦值。 這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)...
摘要:數(shù)組的解構(gòu)賦值特點(diǎn)根據(jù)數(shù)據(jù)的下標(biāo)來(lái)賦值的,有次序。模式能夠匹配起來(lái),如長(zhǎng)度為數(shù)值和布爾值的解構(gòu)賦值解構(gòu)賦值的規(guī)則是只要等號(hào)右邊的值不是對(duì)象或數(shù)組,就先將其轉(zhuǎn)為對(duì)象。布爾值解構(gòu)賦值為字符串的一種。在很多獨(dú)立細(xì)小的方面,解構(gòu)賦值都非常有用。 1、解構(gòu)賦值簡(jiǎn)介 官方解釋:按照一定的模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 舉個(gè)例子,想獲取數(shù)組中...
摘要:解構(gòu)賦值的分類數(shù)組解構(gòu)賦值對(duì)象解構(gòu)賦值字符串解構(gòu)賦值數(shù)值解構(gòu)賦值布爾值解構(gòu)賦值函數(shù)參數(shù)解構(gòu)賦值。嵌套情況默認(rèn)值解構(gòu)賦值允許設(shè)置默認(rèn)值,當(dāng)數(shù)組成員嚴(yán)格等于,默認(rèn)值將生效。報(bào)錯(cuò)報(bào)錯(cuò)函數(shù)參數(shù)的解構(gòu)賦值函數(shù)的參數(shù)也可以使用解構(gòu)賦值和指定默認(rèn)值 ES6可以從數(shù)組和對(duì)象中提取值,然后對(duì)變量進(jìn)行賦值。解構(gòu)賦值的分類:數(shù)組解構(gòu)賦值、對(duì)象解構(gòu)賦值 、字符串解構(gòu)賦值、數(shù)值解構(gòu)賦值、布爾值解構(gòu)賦值、 函數(shù)參...
閱讀 2068·2021-11-24 09:39
閱讀 774·2021-09-30 09:48
閱讀 974·2021-09-22 15:29
閱讀 2410·2019-08-30 14:17
閱讀 1885·2019-08-30 13:50
閱讀 1336·2019-08-30 13:47
閱讀 978·2019-08-30 13:19
閱讀 3418·2019-08-29 16:43