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