js 引數解構 5個實用JS解構用法

2021-10-12 16:06:24 字數 2124 閱讀 9539

1. 交換變數

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

let a = 1;

let b = 2;

let temp;

temp = a;

a = b;

b = temp;

a; // => 2

b; // => 1

temp是乙個臨時變數,它先儲存a的值。然後把b的值賦值給a,接著將temp值賦給 b。

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

let a = 1;

let b = 2;

[a, b] = [b, a];

a; // => 2

b; // => 1

[a,b] = [b,a]是解構賦值,右邊,建立了乙個陣列[b, a],即[2,1]。這個陣列2被賦值了給a,1被賦值給了b。

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

let zero = 2;

let one = 1;

let two = 0;

[zero, one, two] = [two, one, zero];

zero; // => 0

one; // => 1

two; // => 2

2. 訪問陣列中元素

有種場景,咱們可能有乙個為空的項陣列。並且希望訪問陣列的第乙個、第二個或第n個項,但如果該項不存在,則使用指定預設值。

通常會使用陣列的length屬性來判斷

const colors = ;

let firstcolor = 'white';

if (colors.length > 0) = big;

small; // =>

big; // =>

4.解構 iterables

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

許多原生基本型別和物件都是可迭代的: array, string, typed arrays, set 和 map。

如果不想侷限於基本型別,通過實現可迭代協議,可以定製解構邏輯。

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

const movies = ,

[symbol.iterator]() ;

return ;

const [firstmovietitle] = movies;

console.log(firstmovietitle); // => 'heat'

movies物件通過定義symbol.iterator方法來實現可迭代協議,迭代器迭代title。

遵循iterable協議允許將movies物件分解為title,具體方法是讀取第乙個movies的title:const [firstmovietitle] = movies。

廣州設計公司 我的007辦公資源**

5.解構動態屬性

根據經驗,通過屬性對物件進行解構比陣列解構更常見。

物件的解構看起來很更簡單:

const movie = ;

const = movie;

title; // => 'heat'

const = movie建立乙個變數title,並將屬性movie.title的值賦給它。

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

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

function greet(obj, nameprop) = obj;

return `hello, $!`;

greet(, 'name'); // => 'hello, batman!'

greet(, 'name'); // => 'hello, unknown!'

使用2個引數呼叫greet() 函式:物件和屬性名稱。

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

更好的做法是,如果屬性不存在,可以指定預設值「unknown」。

js 引數解構 js 解構

解構 從乙個大的物件中抽取想要的部分成員,單獨使用 3種 1.陣列解構 從陣列中抽取想要的元素出來,單獨使用 如何 下標對下標 var arr 1,2,3 var x,y,z arr var x,y,z 結果 x 1,y 2,z 3 arr 0 麻煩,且沒有意義 2.物件解構 從物件中抽取想要的成員...

JS技巧 解構賦值

在前面我們介紹了使用 json.stringify 來過濾物件的屬性的方法。這裡,我們介紹另外一種使用 es6 中的 解構賦值 和 拓展運算子 的特性來過濾屬性的方法。比如,下面這段示例 我們想過濾掉物件 types 中的 inner 和 outer 屬性 const console.log res...

js 陣列解構賦值

es6中新增了對陣列拆分並且賦值的方法 解構賦值 例子 let arr 1,2,3 let a,b,c arr console.log a a a 1 console.log b b b 2 console.log c c c 3等式左邊的 a,b,c 和右邊的陣列的元素相互對應,a arr 0 b...