ES6 解構 destructuring

来源:https://www.cnblogs.com/jiaobaba/archive/2019/11/12/11844950.html
-Advertisement-
Play Games

解構的作用:簡化書寫長度,提升開發效率。 解構對象 在開發中我們常用到使用ajax請求數據,並且把數據渲染到頁面上。可能這個數據返回的對象或數組。例如返回一個obj{name:'zwq',age:18,sex:woman}而我們獲取裡面的值保存在變數里會用 var name = obj.name,v ...


解構的作用:簡化書寫長度,提升開發效率。

解構對象

在開發中我們常用到使用ajax請求數據,並且把數據渲染到頁面上。可能這個數據返回的對象或數組。例如返回一個obj{name:'zwq',age:18,sex:woman}而我們獲取裡面的值保存在變數里會用 var name = obj.name,var age = obj.age。

在es6中提供瞭解構的語法糖,讓左右兩側極為相似的結構進行變數賦值。

在對象中單獨寫一個name代表的就是 name:name,左側name你要到對象對象找到的屬性,右側name代表你聲明的變數名,所以,下麵代碼中obj對象的name,age屬性賦值給變數name和age。在左側的變數找到了右側對象的相同屬性並把值賦給對應變數。

 

let obj = {
    name: "zwq",
    age: 18,
    sex:'female'
}
let name,age;
({ name, age } = obj);
console.log(name, age);   //zwq 18

 

 

 

上面代碼是先聲明變數,在賦值。也可以聲明變數時同時賦值,如下:

 

let {name,age} = obj;
console.log(name,age);   //zwq 18

 

 

 

當自己聲明的變數不想和對應的屬性重名是

 

let {name:Oname,age:Oage} = obj;
console.log(Oname,Oage);  //zwq 18

 

 

 

預設賦值

下麵代碼採用預設賦值,形參a,分別預設賦值為10,20。當值傳入一個值的時候,b並不是undefined,而是取預設值。

 

function sum(a = 10,b = 20){
    console.log(a+b);
}
sum(5);

 

 

 

下麵代碼使用預設值的方式給變數sex附上預設值male,當對象中找不到對應的屬性是取預設值,當存在對用屬性是,取對象裡面的值。

 

let {name:Oname,age:Oage,sex ='male' } = obj;
console.log(Oname,Oage,sex);

 

 

 

解構數組

由於數組也是對象,屬性名是當前的索引值,所以下麵可以成功的進行變數賦值。同時數組中用length屬性。因此聲明length變數也可以獲取對象的屬性值:數組的長度

 

let arr = [1,2,3];
let {0:x,1:y,2:z} = arr
console.log(x,y,z);   //1,2,3

 let{length} = arr;  console.log(length);  //3
 

 

 

 

而解構就是使用左右兩側極為相似的解構進行賦值,在數組解構中這樣書寫:

 

let [x,y,z] = arr;
console.log(x,y,z);   //1,2,3

 

 

 

當數組嵌套對象的形式也可以利用左右兩側相似解構進行賦值。

用,,,占位,照抄arr的結構。如下聲明name變數,並且列印zwq.

 

let arr = [1,2,3,{name:'zwq'}];
let [,,,{name}] = arr;
console.log(name);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇筆記僅是記錄了一下簡單的關聯查詢,根據筆記中的場景:將某一車輛關聯的耗損記錄全部放在了一個欄位當中。不知道現在中有沒有這種場景,我們的應用中沒有類似的場景,可能我們更關註的是某車輛的總耗損金額和總營收金額、總里程數等,因此這篇筆記記錄一下怎麼得到這些數據。要想獲取這些記錄我們首先想到的就是先按 ...
  • elastic search 集群新增node 同一臺物理機 ...
  • 【學習階段】 WebService網路請求? 其實我也是第一次遇到,之所以有這個需要是因為一些與 ERP 相關的業務,需要用到這樣的一個請求方式。 開始學習WebService ①當然是百度搜索,這裡找了一個學習的博客 https://blog.csdn.net/swjtugiser/article ...
  • 我面試時遇到過幾次讓背個monkey命令的,可以這樣簡單說一個:adb shell monkey -p(約束包名) -s 200 -v -v --throttle 300 1500000 >e:\001.txt (日誌保存路徑) 一、monkey簡介: Monkey 就是SDK中附帶的一個工具。Mo ...
  • 基本選擇器介紹 基本選擇器又分為六種使用方式:如、通用選擇器、標簽選擇器、類選擇器、Id選擇器、結合元素選擇器、多類選擇器。 基本選擇器使用說明表。 選擇器 | 語法格式 | 含義 |舉例 | | | 通用選擇器 | {屬性:值;} |通用選擇器可以選擇頁面上的所有元素,並對它們應用樣式,用 來表示 ...
  • CSS浮動 1. 傳統網頁佈局的三種方式 網頁佈局的本質——用來CSS來擺放盒子。把盒子擺放在相應的位置 CSS提供了三種傳統的佈局方式: 普通流(標準流) 所謂的標準流,就是標簽按照規定好預設方式排列 塊級元素會獨占一行,從上向下排列 常用元素:div、hr、p、h1~h6、ul、ol、dl、fo ...
  • HTML HTML簡介 HTML(Hyper TextMarkupLanguage) 超文本標記語言。 超文本: 超越了文本僅僅展示信息的功能範疇,泛指:圖片、有樣式的文字、超鏈接。 標記: 標簽。 語言: 工具。 HTML是由標簽所組成的語言,能展示超文本的效果。 HTML的語言特征 HTML代碼 ...
  • Hello大家好,今天小主開啟了自己的博客,還請多多瀏覽和分享 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...