摘要:按一定的匹配模式,從數(shù)組或?qū)ο笾薪鈽?gòu)出相應(yīng)值,并賦值給變量。和是單值,沒有相應(yīng)的構(gòu)造函數(shù),不能被解構(gòu)。等價(jià)于報(bào)錯(cuò)解構(gòu)方式左側(cè)的解構(gòu)符決定如何看待右側(cè)的解構(gòu)值。解構(gòu)符意味著視右側(cè)的值為對象,采用對象解構(gòu)。
按一定的匹配模式,從數(shù)組或?qū)ο笾薪鈽?gòu)出相應(yīng)值,并賦值給變量。
let [a] = [3]; // a = 3 let [, a] = [3, [7]]; // a = [7] let {a} = {a: 3}; // a = 3,{a} 相當(dāng) {a: a} let {a: } = {a: {b: 3}}; // b = 3應(yīng)用舉例
快速的聲明并賦予相應(yīng)的屬性值
// --- 以前 let id = obj.id; let name = obj.name; let ago = obj.ago; // --- 現(xiàn)在 let { id, name, ago } = obj;
函數(shù)配置參數(shù)的解構(gòu)和賦默認(rèn)值
// --- 以前 function dealUser(id, conf) { let name = conf.name || ""; let ago = conf.ago || 0; } // --- 現(xiàn)在 // 可以直接使用 name 等,以及設(shè)置默認(rèn)值(類型也易見)。 function dealUser(id, { name = "", ago = 0 }) { // 函數(shù)體 }解構(gòu)非對象
當(dāng)解構(gòu)的目標(biāo)為非對象時(shí),會(huì)將目標(biāo)轉(zhuǎn)化成相應(yīng)類型的對象。
NaN可以使用Number構(gòu)造函數(shù)生成,可以被解構(gòu)。
null和undefined是單值,沒有相應(yīng)的構(gòu)造函數(shù),不能被解構(gòu)。
let {length: a} = "ab"; // a = 2 // 等價(jià)于 let {length: a} = new String("ab"); // a = 2 let {toString: a} = NaN; // a = function let {toString: a} = null; // 報(bào)錯(cuò)解構(gòu)方式
左側(cè)的解構(gòu)符決定如何看待右側(cè)的解構(gòu)值。
解構(gòu)符{}意味著視右側(cè)的值為對象,采用對象解構(gòu)。
解構(gòu)符[]意味著視右側(cè)的值為數(shù)組,采用數(shù)組解構(gòu)。
以此可以推斷:數(shù)組即支持?jǐn)?shù)組解構(gòu)也支持對象解構(gòu)。
原生類數(shù)組對象有迭代接口,也支持兩種解構(gòu)。(arguments, NodeList, new String())
let [a] = "ab"; // a = "a",a 為第一個(gè)元素。 let {length: a} = "ab"; // a = 2 let {length: a} = ["a", "b"]; // a = 2 let [a] = {0: a, length: 1}; // 報(bào)錯(cuò),自定義對象沒有迭代接口。解構(gòu)失敗 解構(gòu)不成功
右側(cè)沒有相對應(yīng)的值,解構(gòu)不報(bào)錯(cuò),變量值為undefined。
let [a, b] = [1]; // a = 1, b = undefined解構(gòu)出錯(cuò)
當(dāng)右側(cè)值(包括轉(zhuǎn)換后)不滿足左側(cè)要求的類型時(shí),解構(gòu)失敗。
let [[a]] = [1]; // 報(bào)錯(cuò),目標(biāo) 1 不是數(shù)組。 let [a] = {a: 3}; // 報(bào)錯(cuò),目標(biāo) {a: 3} 不是數(shù)組。指定默認(rèn)值
可以為待賦值的變量指定默認(rèn)值。
默認(rèn)值可以使用解構(gòu)中其他變量,但該變量的解構(gòu)必須在此之前。
let [a, b = 2] = [1]; // a = 1, b = 2 let [a, b = a] = [1]; // a = 1, b = 1
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107787.html
摘要:在函數(shù)方面的擴(kuò)展比較豐富也很實(shí)用,本篇概括了這中的精華知識。所以無法成為構(gòu)造函數(shù),不能使用操作符。參數(shù)將擴(kuò)展運(yùn)算符作用于參數(shù),即為參數(shù)。聲明式,直接為函數(shù)名。通過構(gòu)造函數(shù)生成的,為。函數(shù)的屬性,在其描述對象的屬性上,為函數(shù)名。 ES6在函數(shù)方面的擴(kuò)展比較豐富也很實(shí)用,本篇概括了這中的精華知識。 1 箭頭函數(shù) 箭頭函數(shù)是ES6中定義函數(shù)的新形式。 新形式不僅簡化了定義方式,更為函數(shù)本身...
摘要:另外對于已經(jīng)聲明的變量進(jìn)行解構(gòu)賦值時(shí),要非常小心。因此在行首加,將其強(qiáng)制轉(zhuǎn)化為表達(dá)式執(zhí)行。由于和無法轉(zhuǎn)為對象,所以對它們進(jìn)行解構(gòu)賦值,都會(huì)報(bào)錯(cuò)。 let和const let和const是es6新增的兩個(gè)變量聲明關(guān)鍵字,與var的不同點(diǎn)在于: (1)let和const都是塊級作用域,在{}內(nèi)有效,這點(diǎn)在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。 (2)使用let和con...
摘要:比如上面展示的情況都是可以聯(lián)合使用的比如對象的解構(gòu)賦值對象的解構(gòu)賦值是基于屬性的。當(dāng)給已存在的變量解構(gòu)賦值時(shí),注意加這是由于如果不加會(huì)把左邊看成一個(gè)代碼塊,會(huì)報(bào)錯(cuò)。注意事項(xiàng)數(shù)組的解構(gòu)賦值中,使用的變量必須放在最后。 解構(gòu)賦值 解構(gòu)賦值是一個(gè)聽起來比較高大上的特性,但按我的理解,它就是一種語法糖。它并沒有賦予js更強(qiáng)大的能力,只是讓賦值操作更加的靈活,效率。 在es6之前,賦值操作需要=...
摘要:前言前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)。對象的解構(gòu)賦值是根據(jù)對象值進(jìn)行匹配。前言該篇筆記是第二篇 變量的解構(gòu)賦值。這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。解構(gòu)賦值是對賦值運(yùn)...
摘要:前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)。對象的解構(gòu)賦值是根據(jù)對象值進(jìn)行匹配。 前言該篇筆記是第二篇 變量的解構(gòu)賦值。 這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對象中提取值,對...
閱讀 1716·2023-04-26 01:02
閱讀 4880·2021-11-24 09:39
閱讀 1815·2019-08-30 15:44
閱讀 2900·2019-08-30 11:10
閱讀 1795·2019-08-30 10:49
閱讀 993·2019-08-29 17:06
閱讀 619·2019-08-29 16:15
閱讀 910·2019-08-29 15:17