成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript中,5個解構有趣的用途

開發 前端
為了保證的可讀性,本文采用意譯而非直譯。

 [[284514]]

1. 交換變量

通常交換兩個變量的方法需要一個額外的臨時變量,來看看例子:

 

JavaScript中,5 個 解構有趣的用途

 

temp是一個臨時變量,它先保存a的值。然后把b的值賦值給a,接著將temp值賦給 b。

如果使用解構的方式會更簡單,不需要什么鬼的 temp 變量。

 

JavaScript中,5 個 解構有趣的用途

 

[a,b] = [b,a]是解構賦值,右邊,創建了一個數組[b, a],即[2,1]。這個數組2被賦值了給a,1被賦值給了b。

雖然這種方式也創建了臨時數組,但這種方式給看起來至少更簡潔,使用解構咱們還可以交換2個以上的變量。

 

JavaScript中,5 個 解構有趣的用途

 

2. 訪問數組中元素

有種場景,咱們可能有一個為空的項數組。并且希望訪問數組的第一個、第二個或第n個項,但如果該項不存在,則使用指定默認值。

通常會使用數組的length屬性來判斷

 

JavaScript中,5 個 解構有趣的用途

 

使用數組解構,可以更簡潔的實現同樣的效果:

 

JavaScript中,5 個 解構有趣的用途

 

const [firstColor = 'white'] = colors 解構將colors數組的第一個元素賦給firstColor變量。如果數組在索引0處沒有任何元素,則分配“white”默認值。

當然還可以更靈活,如果只想訪問第二個元素,可以這么做。

 

JavaScript中,5 個 解構有趣的用途

 

注意解構左側的逗號:它表示忽略第一個元素,secondColor使用colors數組中索引為1的元素進行賦值。

3.不可變操作

當我開始使用React和Redux時,被迫編寫了一些遵守不可變性的代碼。雖然一開始有些困難,但后來我看到了它的好處:更容易處理單向數據流。

不變性要求不能改變原始對象。幸運的是,解構可以以不可變的方式輕松實現某些操作。

 

JavaScript中,5 個 解構有趣的用途

 

解構 [, ... fooNumbers] = numbers創建一個新的數組fooNumbers,fooNumbers 包含 numbers 元素,除了第一個元素。

numbers 數組沒有發生變化,保持操作不變性。

以同樣不可變的方式,可以從對象中刪除屬性,接著試著從對象big中刪除foo屬性:

 

JavaScript中,5 個 解構有趣的用途

 

4.解構 iterables

在前面幾個例子中,對數組使用了解構,但是咱們可以對任何實現可迭代協議( iterable protocol)的對象進行解構。

許多原生基本類型和對象都是可迭代的: array, string, typed arrays, set 和 map。

如果不想局限于基本類型,通過實現可迭代協議,可以定制解構邏輯。

movies包含一個movie對象列表。在解構movies時,將title作為字符串獲取是非常棒的。讓咱們實現一個自定義迭代器。

 

JavaScript中,5 個 解構有趣的用途

 

movies對象通過定義Symbol.iterator方法來實現可迭代協議,迭代器迭代title。

遵循iterable協議允許將movies對象分解為title,具體方法是讀取第一個movies的title:const [firstMovieTitle] = movies。

5.解構動態屬性

根據經驗,通過屬性對對象進行解構比數組解構更常見。

對象的解構看起來很更簡單:

 

JavaScript中,5 個 解構有趣的用途

 

const {title} = movie創建一個變量title,并將屬性movie.title的值賦給它。

到對象解構時,我有點驚訝于咱們不必靜態地知道屬性名,可以使用動態屬性名稱來解構對象。

為了了解動態解構如何工作的,編寫一個greet函數:

 

JavaScript中,5 個 解構有趣的用途

 

使用2個參數調用greet() 函數:對象和屬性名稱。

在greet()內部,解構賦值const {[nameProp]:name ='Unknown'} = obj使用方括號的形式 [nameProp]讀取動態屬性名稱,name變量接收動態屬性值。

更好的做法是,如果屬性不存在,可以指定默認值“Unknown”。

責任編輯:華軒 來源: 今日頭條
相關推薦

2011-07-11 10:16:07

JavaScript

2021-04-01 17:04:34

Javascript語法數組

2023-04-21 08:11:24

2024-06-18 10:28:46

2021-07-26 05:20:47

JavaScript解構賦值數組解構

2024-07-17 11:35:31

JavaScript解構賦值

2024-09-10 15:34:18

JavaScript解構賦值

2011-02-13 13:04:00

HTML 5Web

2016-12-05 15:15:52

JavaScriptCSS庫

2023-08-13 16:32:12

JavaScript

2021-02-04 09:52:30

增強現實AR數字通信

2020-07-19 15:32:13

JavaScript開發技術

2020-07-29 07:52:41

JavaScript

2014-07-24 09:39:52

Android L

2014-01-22 09:46:42

JavaScript數組

2009-08-25 14:25:19

Eclipse 3.5

2016-12-21 09:35:55

JavaScript原生數組函數

2019-11-25 14:24:24

機器學習算法數據

2015-07-31 10:06:38

2015-05-25 10:40:22

Linux命令行技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频中文字幕 | 精品久久一区 | 91视视频在线观看入口直接观看 | 欧美日韩高清 | 狠狠狠色丁香婷婷综合久久五月 | 午夜资源| 午夜视频在线观看一区二区 | 精品久久久久久久 | 天堂网色 | www.亚洲一区二区 | 亚洲精品电影在线观看 | 久久尤物免费一区二区三区 | 亚洲激情一区二区 | 国产精品亚洲成在人线 | 91精品国产欧美一区二区 | 欧美中文字幕一区二区 | 99亚洲精品 | 亚洲欧美日韩久久 | 黑人精品 | 国产精品a一区二区三区网址 | 国产成人精品a视频一区www | 成人在线视频免费播放 | 久久精品视频在线播放 | 在线欧美视频 | 四虎成人免费视频 | 伊人影院在线观看 | 国产精品中文字幕在线 | 中文字幕国产视频 | 亚洲精品久久国产高清情趣图文 | 亚洲精品一区二区另类图片 | 国产精品久久久久久久久久久免费看 | 久久精品久久久 | 在线观看视频中文字幕 | 久久成人精品一区二区三区 | 三级特黄特色视频 | 欧美一二三 | 欧美精品三区 | 一级毛片播放 | 国产免费拔擦拔擦8x高清 | 中文字幕第一页在线 | 亚洲 欧美 日韩 在线 |