Javascript中的解構(gòu)賦值語(yǔ)法詳解
前言
首先在 ES6中引入的“解構(gòu)賦值語(yǔ)法”允許把數(shù)組和對(duì)象中的值插入到不同的變量中。雖然看上去可能很難,但實(shí)際上很容易學(xué)習(xí)和使用。
解構(gòu)賦值語(yǔ)法是一種 JS表達(dá)式。ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。通過(guò)解構(gòu)賦值, 可以將屬性/值從對(duì)象/數(shù)組中取出,賦值給其他變量。
在ES6解構(gòu)賦值出現(xiàn)之前,我們需要為變量賦值的時(shí)候,只能直接指定值。
比如:
let a = 1; let b = 2; let c = 3; let d = 4; let e = 5;
數(shù)組解構(gòu)非常簡(jiǎn)單。你所要做的就是為數(shù)組中的每個(gè)值聲明一個(gè)變量。你可以定義更少的變量,而不是數(shù)組中的索引(即,如果你只想解處理前幾個(gè)值),請(qǐng)?zhí)^(guò)某些索引或甚至使用 REST 模式將所有剩余的值放到新數(shù)組中。
const nums = [ 3, 6, 9, 12, 15 ]; const [ k, // k = 3 l, // l = 6 , // Skip a value (12) ...n // n = [12, 15] ] = nums;
對(duì)象解構(gòu)
對(duì)象解構(gòu)與數(shù)組解構(gòu)非常相似,主要區(qū)別是可以按名稱引用對(duì)象中的每個(gè)key,從而創(chuàng)建一個(gè)有相同名稱的變量。此外還可以將鍵解構(gòu)為新的變量名,只解構(gòu)所需的 key,然后用 rest 模式將剩余的 key 解構(gòu)為新對(duì)象。
const obj = { a: 1, b: 2, c: 3, d: 4 }; const { a, // a = 1 c: d, // d = 3 ...rest // rest = { b: 2, d: 4 } } = obj;
嵌套解構(gòu)
嵌套對(duì)象和數(shù)組可以通過(guò)相同的規(guī)則來(lái)進(jìn)行解構(gòu)。區(qū)別在于可以將嵌套 key 或值直接解構(gòu)為變量,而不必將父對(duì)象存儲(chǔ)在變量本身中。
const nested = { a: { b: 1, c: 2 }, d: [1, 2]}; const { a: { b: f, // f = 1 ...g // g = { c: 2 } }, ...h // h = { d: [1, 2]} } = nested;
高級(jí)解構(gòu)
由于數(shù)組的行為與對(duì)象相似,所以可以通過(guò)使用索引作為對(duì)象解構(gòu)分配中的 key,用解構(gòu)分配語(yǔ)法從數(shù)組中獲取特定值。用這種方法還可以得到數(shù)組的其他屬性(例如數(shù)組的 length)。最后,如果解構(gòu)后的值是 undefined,則還可以為解構(gòu)過(guò)程中的變量定義默認(rèn)值。
const arr = [ 5, 'b', 4, 'd', 'e', 'f', 2 ]; const { 6: x, // x = 2 0: y, // y = 5 2: z, // z = 4 length: count, // count = 7 name = 'array', // name = 'array' (not present in arr) ...restData // restData = { '1': 'b', '3': 'd', '4': 'e', '5': 'f' } } = arr;
總結(jié)
到此這篇關(guān)于Javascript中解構(gòu)賦值語(yǔ)法的文章就介紹到這了,更多相關(guān)JS解構(gòu)賦值語(yǔ)法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
小程序獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)的方法
這篇文章主要為大家詳細(xì)介紹了小程序獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-08-08JS+HTML5 FileReader實(shí)現(xiàn)文件上傳前本地預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了JS+HTML5 FileReader實(shí)現(xiàn)文件上傳前本地預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07js實(shí)現(xiàn)的日期操作類DateTime函數(shù)代碼
感覺js自帶的Date類型對(duì)象用起來(lái)不是很方便,照著C#的DateTime做了一個(gè)2010-03-03JavaScript運(yùn)動(dòng)框架 鏈?zhǔn)竭\(yùn)動(dòng)到完美運(yùn)動(dòng)(五)
這篇文章主要為大家詳細(xì)介紹了JavaScript運(yùn)動(dòng)框架的第五部分,鏈?zhǔn)竭\(yùn)動(dòng)到完美運(yùn)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問(wèn)題
這篇文章主要給大家介紹了關(guān)于如何解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問(wèn)題的相關(guān)資料,xlsx.js是一種前端庫(kù),它可以使您使用JavaScript讀取、解析和導(dǎo)出電子表格文件,如Microsoft Excel,需要的朋友可以參考下2024-03-03JavaScrpt判斷一個(gè)數(shù)是否是質(zhì)數(shù)的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家分享了JavaScrpt判斷一個(gè)數(shù)是否是質(zhì)數(shù),需要的朋友參考下吧2017-06-06JS 中document.URL 和 windows.location.href 的區(qū)別
實(shí)際上,document 和 windows 這兩個(gè)對(duì)象的區(qū)別已經(jīng)包含了這個(gè)問(wèn)題的答案。2009-11-11瀏覽器JavaScript調(diào)試功能無(wú)法使用解決方案
這篇文章主要介紹了瀏覽器JavaScript調(diào)試功能無(wú)法使用解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09ElementUI中el-tree如何獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài)
ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài),有時(shí)候需要獲取el-tree每個(gè)節(jié)點(diǎn)的點(diǎn)擊狀態(tài),可以通過(guò)以下方式,其中isCheck類型為布爾值,本文結(jié)合實(shí)例代碼介紹ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài),感興趣的朋友一起看看吧2023-12-12