剩餘運算子與展開運算子的區別
本文介紹一下ES2015新增剩餘運算子與展開運算子之間的區別。
通常運算子之間的區別是非常明顯的,從"長相"就可以很容易區分。
首先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let a=5,b=2; console.log(a-b); console.log(a+b);
誰要問一聲加號運算子和減號運算子的區別,可以想象聽者的心態是爆炸的。
JavaScript中的幾乎所有運算子的區別都是如此明顯。
但是剩餘運算子與展開運算子之間的區別是一個例外,兩者十分相像。
原因如下:
(1).剩餘運算子與展開運算子完全一樣,都是三個點(...)。
(2).剩餘運算子與展開運算子應用場景類似。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let arr = ["螞蟻部落", 6, "softwhy.com"]; console.log([...arr,"青島市南區"]);
程式碼執行效果截圖如下:
上面是展開運算子的應用。
它可以將陣列展開,將其中的陣列元素新增到目標陣列中。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let [webName,...rest]=["螞蟻部落",6,"softwhy.com"]; console.log(webName); console.log(rest);
程式碼執行效果截圖如下:
上面是剩餘運算子的應用。
可以看到運算子並沒有將rest展開,而是將剩餘的陣列元素集中起來存放在rest,形成一個新陣列。
區別總結如下:
首先強調一點,兩者長相確實一模一樣。
但是功能區別還是很大的,展開運算子是將一個資料結構展開,將其內部的元素通過某種形式羅列出來,但是剩餘運算子則是將剩餘的資料壓縮集合起來生成一個資料結構,是展開運算子的反向操作。上面的程式碼中,展開運算子將陣列arr展開,而剩餘運算子則是生成一個陣列rest。
兩個運算子的用法可以參閱如下兩篇文章:
(1).剩餘運算子可以參閱JavaScript 剩餘運算子一章節。
(2).展開運算子可以參閱JavaScript 展開運算子一章節。
相關文章
- JavaScript 剩餘運算子JavaScript
- ES6 - 函式與剩餘運算子函式
- 剩餘引數、擴充運算子
- Java運算子>>與>>>區別詳解Java
- JavaScript 展開運算子JavaScript
- JavaScript % 求餘運算子JavaScript
- ES6展開運算子(擴充套件運算子)套件
- ## 運算子和方法的區別
- 20181210-es6(let&const&解構&模版字串原理 &展開運算子、剩餘運算子運用 & 深拷貝原理 & reduce原理 & 箭頭函式)字串函式
- 運算子 運算子
- PHP7 ?? 與 ?: 的作用和區別(null合併運算子, null條件運算子)PHPNull
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- php運算子運用之型別運算子該如何使用PHP型別
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- php運算子 比較運算子 邏輯運算子 三元運算子PHP
- 運算子-賦值運算子賦值
- 運算子的關係,什麼叫一元運算子,二元運算子,三元運算子,運算子優先順序,以及運算子的
- js運算子 “==” 與 “===”JS
- javascript中&&運算子和||運算子的使用JavaScript
- 算術運算子裡的特殊運算子
- # JavaScript中的 || 與 && 運算子JavaScript
- 運算子
- 運算子與表示式
- 位運算子與其他
- php型別運算子的使用PHP型別
- swift 區間運算子(... 和 ..Swift
- Python 運算子優先順序 運算子Python
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- 型別轉換運算子型別
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- c++ 和 c 三目運算子區別C++
- python的運算子Python
- Java的運算子Java
- C++ 迭代器運算子 箭頭運算子->C++
- JS-11 運算子之布林運算子JS
- JavaScript && 邏輯與運算子JavaScript
- JavaScript & 按位與運算子JavaScript
- Java 運算子Java