欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JS解構(gòu)的使用方法有哪些

這篇文章主要介紹“JS解構(gòu)的使用方法有哪些”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“JS解構(gòu)的使用方法有哪些”文章能幫助大家解決問題。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),靈山企業(yè)網(wǎng)站建設(shè),靈山品牌網(wǎng)站建設(shè),網(wǎng)站定制,靈山網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,靈山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

1. 交換變量(Swap variables)

交換2個變量的的常用做法是需要一個額外的臨時變量,來看一個簡單的場景:

let a = 1;
let b = 2;
let temp;

temp = a;
a = b;
b = temp;

a; // => 2
b; // => 1

temp是一個臨時變量,它保存a的值,然后將b的值賦給a,最后再把temp中保存的a的值賦給b,完成了交換。
解構(gòu)賦值使變量交換更簡單,不需要顯式創(chuàng)建臨時變量:

let a = 1;
let b = 2;

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

a; // => 2
b; // => 1

[a, b] = [b, a]是一個解構(gòu)賦值。在右邊,創(chuàng)建了一個數(shù)組[b, a],即[2,1],這個數(shù)組的第一項(即值為2)分配給a,第二項(即值為1)分配給b,完成了交換。
雖然這種方法仍然創(chuàng)建了一個臨時數(shù)組,但是這種交換變量的方式看起來更加簡潔。
不僅如此,這種方法還可以交換2個以上的變量,如下:

let zero = 2;
let one = 1;
let two = 0;

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

zero; // => 0
one;  // => 1
two;  // => 2

你可以交換任意多的變量!不過,交換兩個變量是最常見的場景。

2. 訪問數(shù)組項(Access array item)

你有一個可能為空的數(shù)組。你希望訪問數(shù)組的第1個、第2個或第n個元素,但如果該元素不存在,則獲取一個默認(rèn)值。
通常你會使用數(shù)組的長度屬性:

const colors = [];

let firstColor = 'white';
if (colors.length > 0) {
 firstColor = colors[0];
}

firstColor; // => 'white'

使用數(shù)組解構(gòu)實現(xiàn)同樣的效果的代碼量更少:

const colors = [];

const [firstColor = 'white'] = colors;

firstColor; // => 'white'

const [firstColor = 'white'] = colors解構(gòu)將colors數(shù)組的第一個元素賦給firstColor變量。如果數(shù)組在索引0處沒有任何元素,則分配“white”默認(rèn)值。
這里提供了更大的靈活性,如果你只想訪問第二個元素,這也是可能的:

const colors = [];

const [, secondColor = 'black'] = colors;

secondColor; // => 'black'

注意解構(gòu)左邊的逗號:它表示忽略第一個元素。secondColorcolors數(shù)組中索引1處的元素賦值。

3. 不變的操作(Immutable operations)

當(dāng)我開始使用React和后來的Redux時,我被迫編寫了一些涉及不可變性的代碼(這里的意思是保持原對象不變)。雖然一開始有些困難,但后來我看到了它的好處:更容易處理單向數(shù)據(jù)流。
不變性是指禁止改變對象。幸運(yùn)的是,解構(gòu)可以幫助你輕松地以不可變的方式實現(xiàn)某些操作。
解構(gòu)與rest操作符(...)結(jié)合來刪除數(shù)組的第一個元素:

const numbers = [1, 2, 3];

const [, ...fooNumbers] = numbers;

fooNumbers; // => [2, 3]
numbers; // => [1, 2, 3]

[, ...fooNumbers] = numbers解構(gòu),創(chuàng)建了一個新的數(shù)組fooNumbers,它包含了numbers數(shù)組中除第一個元素以外的其他元素。numbers數(shù)組沒有發(fā)生變化,保持了操作不變性。
以同樣不可變的方式,你可以從對象中刪除屬性。讓我們試著從big對象中刪除foo屬性:

const big = {
 foo: 'value Foo',
 bar: 'value Bar'
};

const { foo, ...small } = big;

small; // => { bar: 'value Bar' }
big; // => { foo: 'value Foo', bar: 'value Bar' }

解構(gòu)賦值與對象rest操作符相結(jié)合,創(chuàng)建一個新對象small,它包含了big對象中除foo屬性外的所有屬性。

4. 解構(gòu)可迭代對象(Destructuring iterables)

在前面的小節(jié)中,對數(shù)組應(yīng)用了解構(gòu)。但是你可以對任何實現(xiàn)可迭代協(xié)議(iterable protocol)的對象進(jìn)行解構(gòu)。
許多原生基本類型和對象都是可迭代的:數(shù)組(arrays)、字符串(string)、類數(shù)組(typed arrays)、集合(set)和映射(map)。
例如,你可以把一個字符串解構(gòu)成幾個字符:

const str = 'cheese';

const [firstChar = ''] = str;

firstChar; // => 'c'

你并不用局限于原生的類型,通過實現(xiàn)可迭代協(xié)議,可以定制解構(gòu)邏輯。
movies包含一個movie對象的列表。在解構(gòu)movies時,將電影標(biāo)題作為字符串來獲取是非常棒的。讓我們實現(xiàn)一個自定義迭代器:

const movies = {
  list: [
    { title: 'Heat' }, 
    { title: 'Interstellar' }
  ],
  [Symbol.iterator]() {
    let index = 0;
    return {
      next: () => {
        if (index < this.list.length) {
          const value = this.list[index++].title;
          return { value, done: false };
        }
        return { done: true };
      }
    };
  }
};

const [firstMovieTitle] = movies;
console.log(firstMovieTitle); // => 'Heat'

movies對象通過定義Symbol.iterator來實現(xiàn)可迭代協(xié)議。迭代器的方法:迭代電影的標(biāo)題。
遵循迭代協(xié)議允許將movies對象解構(gòu)為標(biāo)題,獲取第一部電影標(biāo)題的具體方法是:const [firstMovieTitle] = movies。

5. 解構(gòu)動態(tài)屬性(Destructuring dynamic properties)

根據(jù)我的經(jīng)驗,通過屬性對對象進(jìn)行解構(gòu)比數(shù)組解構(gòu)更常見。對象的解構(gòu)看起來很簡單:

const movie = { title: 'Heat' };

const { title } = movie;

title; // => 'Heat'

const {title} = movie創(chuàng)建一個變量title,并將屬性movie.title的值賦給它。
當(dāng)我第一次讀到對象解構(gòu)時,我有點驚訝于你不必靜態(tài)地知道屬性名,你可以使用動態(tài)屬性名稱來解構(gòu)對象!

function greet(obj, nameProp) {
 const { [nameProp]: name = 'Unknown' } = obj;
 return `Hello, ${name}!`;
}

greet({ name: 'Batman' }, 'name'); // => 'Hello, Batman!'
greet({ }, 'name'); // => 'Hello, Unknown!'

greet()函數(shù)有兩個參數(shù):對象和屬性名。在greet()函數(shù)內(nèi)部,解構(gòu)賦值const {[nameProp]: name = 'Unknown'} = obj使用中括號[nameProp]讀取動態(tài)屬性名,name變量作為別名接收動態(tài)屬性值。如果屬性不存在,你還可以給它賦一個默認(rèn)值Unknown。

關(guān)于“JS解構(gòu)的使用方法有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

分享標(biāo)題:JS解構(gòu)的使用方法有哪些
網(wǎng)站URL:http://aaarwkj.com/article42/jjhphc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計動態(tài)網(wǎng)站、用戶體驗、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
黑丝美女国产精品久久久| 国产亚洲精品久在线| 深夜av免费在线观看| 最新91精品国产自产在线| 亚洲国产精品一区二区三区在线| 久久精品国产亚洲成人av| 午夜av在线毛片免费观看| 加勒比东京热视频在线| 国产三级黄色片免费看| 98精品偷拍视频一区二区三区| 欧美福利免费在线视频| 一区二区三区成人高清视频| 精品久久少妇激情视频| 日本高清三级精品一区二区| 国产欧美日韩精品av| 国产av手机自拍看片| 欧美一级特黄大片做受农村| 久久精品亚洲熟女av蜜臀| 国产成人综合在线观看网站| 中文字幕有码在线朋友| 日本人妻三级精品久久| 欧美黄片一区二区三区三| 日韩不卡一区二区三区| 熟女一区二区中文字幕| 日本中文字幕三级专区| 久久精品国产亚洲av麻豆花絮| 四虎海外免费永久地址| 一区二区三区熟妇人妻视频| 国产18成人午夜视频在线观看| 亚洲,日韩,欧美久久综合| 国产精品久久久久精品三级中文国| 国产免费很黄很色视频| 毛片成人18毛片免费看| 免费观看国产裸体视频| 日本中文有码视频在线观看| 欧美日韩国产综合在线观看| 2022国产精品一区| 亚洲精品另类中文字幕| 亚洲高清成人在线观看| 91九色中文视频在线观看| 精品国产亚洲av未满十八|