欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ES6中的Javascript解構(gòu)的實(shí)現(xiàn)

 更新時(shí)間:2020年10月30日 10:51:47   作者:SugarTurboS  
這篇文章主要介紹了ES6中的Javascript解構(gòu)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

ES6中的解構(gòu)特性能讓我們從對象(Object)或者是數(shù)組(Array)中取值的時(shí)候更方便,同時(shí)寫出來的代碼在可讀性方面也更強(qiáng)。之前接觸過python語言的小伙伴應(yīng)該對這個(gè)不會(huì)陌生,這個(gè)特性早已在python中實(shí)現(xiàn)了。在python中,我們可以通過下面的代碼來取值

lst = [3, 5]
first, second = lst 
print(first, second)

first和second兩個(gè)變量,分別被賦值上了數(shù)組中的3和5,是不是很簡單很清晰?
那在有這個(gè)特性之前,我們一般怎么從對象或數(shù)組中取值呢?來看看下面的代碼:

let list = [3, 5]
let first = list[0]
let second = list[1]

在這種方式中,你必須得手動(dòng)指定個(gè)數(shù)組下標(biāo),才能把對應(yīng)的值賦給你指定的變量。那如果用ES6的解構(gòu)特性,代碼將會(huì)變得更簡潔,可讀性也更高:

let [first, second] = list;

對象的解構(gòu)

基礎(chǔ)對象解構(gòu)

首先我們來看看ES6中基本的對象解構(gòu)應(yīng)該怎么寫:

const family = {
 father: ''
 mother: ''
}
const { father, mother } = family;

我們從family對象中解構(gòu)出來了它的兩個(gè)屬性father和mother,并賦值給了另外定義的father和mother對象。此后,我們就能直接通過father和mother變量獲取到family中相應(yīng)key的值了。這個(gè)例子是解構(gòu)對象最簡單的一種應(yīng)用,下面來看看更有趣的。

解構(gòu)沒有聲明過的對象

在上面的例子中,我們先聲明的family對象,然后再通過解構(gòu)語法獲取其中的值。那如果不聲明是否可以呢:

const { father, mother } = {father: '',mother: ''}

其實(shí)也是可以的,在一些情況下,我們是沒有必要特意去聲明一個(gè)對象或是把對象賦值給一個(gè)變量,然后去才解構(gòu)的。很多時(shí)候我們可以直接解構(gòu)未聲明的對象。

解構(gòu)對象并重命名變量

我們也可以將對象中的屬性解構(gòu)之后,并對其重新命名,比如:

const { father: f, mother:m } = {father: '1',mother: '2'}
console.log(f); // '1'

在上面的代碼中,對象中的father被解構(gòu)出來后,重新賦值給了變量f,與前一個(gè)例子相比,相當(dāng)于重名了了father變量為f。接下來就可以用f繼續(xù)進(jìn)行操作。

解構(gòu)默認(rèn)值

想象一下一種場景,后臺(tái)返回了一個(gè)family對象,原本family對象約定了有三個(gè)屬性,分別為father,mother,child。你拿到返回的數(shù)據(jù)并解構(gòu)這三個(gè)屬性:

const { father, mother, child } = {father: '1',mother: '2', child: '3'}

這看上去沒有什么問題,但現(xiàn)實(shí)情況總是不如人意。后臺(tái)由于代碼有bug,返回的family對象中,只包含了mother和child,漏了father。這時(shí)經(jīng)過上面代碼的解構(gòu)后, father就會(huì)變成undefined:

const { father, mother, child } = {father: '1',mother: '2'}
console.log(child) //undefined

很多時(shí)候我們會(huì)想要在后臺(tái)漏了某個(gè)屬性的時(shí)候,也能解構(gòu)出一個(gè)默認(rèn)值。那其實(shí)可以這么寫:

const { father = '1', mother = '2', child = '3'} = {father: '1',mother: '2'}
console.log(child) //'3'

結(jié)合前一個(gè)例子,你既可以改變量名又能賦值默認(rèn)值:

const { father: f = '1', mother: m = '2', child: c = '3'} = {father: '1',mother: '2'}

在函數(shù)參數(shù)中解構(gòu)

const family = {
 father: ''
 mother: ''
}
function log({father}){
 console.log(father)
}
log(family)

在函數(shù)的參數(shù)中,運(yùn)用解構(gòu)的方式,可以直接獲取出入對象的屬性值,不需要像以往使用family.father傳入。

解構(gòu)嵌套對象

在上面的例子中,family的屬性都只有1層,如果family的某些屬性的值也是一個(gè)對象或數(shù)組,那怎么將這些嵌套對象的屬性值解構(gòu)出來呢?來看看下面的代碼:

const family = {
 father: 'mike'
 mother: [{
 name: 'mary'
 }]
}
const { father, mother: [{
 name:motherName
}]} = family;

console.log(father); //'mike'
console.log(motherName) //'mary'

數(shù)組的解構(gòu)

數(shù)組的解構(gòu)方式其實(shí)跟對象的非常相似,在文章開頭也略有提及,不過我們還是來看一下數(shù)組解構(gòu)的一些典型場景。

基礎(chǔ)對象解構(gòu)

const car = ['AUDI', 'BMW'];

const [audi, bmw] = car;
console.log(audi); // "AUDI"
console.log(bmw); // "BMW"

只要對應(yīng)數(shù)組的位置,就能正確的解構(gòu)出相應(yīng)的值。

解構(gòu)默認(rèn)值

同對象解構(gòu)的默認(rèn)值場景,很多時(shí)候我們也需要在解構(gòu)數(shù)組的時(shí)候加上默認(rèn)值以滿足業(yè)務(wù)需要。

const car = ['AUDI', 'BMW'];

const [audi, bmw, benz = 'BENZ'] = car;
console.log(benz); // "BENZ"

在解構(gòu)中交換變量

假設(shè)我們有如下兩個(gè)變量:

let car1 = 'bmw';
let car2 = 'audi'

如果我們想交換這兩個(gè)變量,以往的做法是:

let temp = car1;
car1 = car2;
car2 = temp;

需要借助一個(gè)中間變量來實(shí)現(xiàn)。那利用數(shù)組的解構(gòu),就簡單很多:

let car1 = 'bmw';
let car2 = 'audi'
[car2, car1] = [car1, car2]
console.log(car1); // 'audi'
console.log(car2); // 'bmw'

如果是想在一個(gè)數(shù)組內(nèi)部完成元素位置的交換,比如吧[1,2,3]交換成[1,3,2],那么可以這么實(shí)現(xiàn):

const arr = [1,2,3];
[arr[2], arr[1]] = [arr[1], arr[2]];
console.log(arr); // [1,3,2]

從函數(shù)的返回解構(gòu)數(shù)組

很多函數(shù)會(huì)返回?cái)?shù)組類型的結(jié)果,通過數(shù)組解構(gòu)可以直接拿值:

functin fun(){
 return [1,2,3]
}
let a, b, c; 
[a, b, c] = fun();

當(dāng)然,如果我們只想要函數(shù)返回?cái)?shù)組中的其中一些值,那也可以把他們忽略掉

functin fun(){
 return [1,2,3]
}
let a, c; 
[a, , c] = fun();

可以看到,ES6的解構(gòu)特性在很多場景下是非常有用的。期望大家能更多的將解構(gòu)運(yùn)用到項(xiàng)目中,讓代碼變得更加簡單,清晰易懂。

到此這篇關(guān)于ES6中的Javascript解構(gòu)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)ES6 解構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 關(guān)于layui toolbar和template的結(jié)合使用方法

    關(guān)于layui toolbar和template的結(jié)合使用方法

    今天小編就為大家分享一篇關(guān)于layui toolbar和template的結(jié)合使用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js的2種繼承方式詳解

    js的2種繼承方式詳解

    這篇文章主要介紹了javascript的2種繼承方式,分析對象冒充和原型鏈方式的不同,需要的朋友可以參考下
    2014-03-03
  • Electron 使用 Nodemon 配置自動(dòng)重啟的方法

    Electron 使用 Nodemon 配置自動(dòng)重啟的方法

    在Electron開發(fā)過程中,每次代碼修改后需手動(dòng)重新啟動(dòng)應(yīng)用,這一過程可以通過引入Nodemon工具自動(dòng)化,Nodemon能夠監(jiān)測文件變化并自動(dòng)重啟服務(wù)器,本文給大家介紹Electron 使用 Nodemon 配置自動(dòng)重啟,感興趣的朋友一起看看吧
    2024-09-09
  • JavaScript實(shí)現(xiàn)表格表單的隨機(jī)選擇和簡單的隨機(jī)點(diǎn)名

    JavaScript實(shí)現(xiàn)表格表單的隨機(jī)選擇和簡單的隨機(jī)點(diǎn)名

    本文主要介紹了JavaScript實(shí)現(xiàn)表格表單的隨機(jī)選擇和簡單的隨機(jī)點(diǎn)名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • JavaScript基本語法學(xué)習(xí)教程

    JavaScript基本語法學(xué)習(xí)教程

    javascript語言是網(wǎng)頁中廣泛使用的一種腳本語言,通過本文給大家介紹javascript基本語法,需要的朋友可以參考下本文
    2016-01-01
  • QML實(shí)現(xiàn)圓環(huán)顏色選擇器

    QML實(shí)現(xiàn)圓環(huán)顏色選擇器

    這篇文章主要為大家詳細(xì)介紹了QML實(shí)現(xiàn)圓環(huán)顏色選擇器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Echart中國地圖更換背景圖的方法示例

    Echart中國地圖更換背景圖的方法示例

    本文主要介紹了Echart中國地圖更換背景圖的方法示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • js使彈層下面的body禁止?jié)L動(dòng)

    js使彈層下面的body禁止?jié)L動(dòng)

    這篇文章介紹了js使彈層下面body禁止?jié)L動(dòng)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 自己封裝的常用javascript函數(shù)分享

    自己封裝的常用javascript函數(shù)分享

    這里給大家推薦一個(gè)自己封裝的常用的javascript函數(shù),基本上常見的操作都包含在內(nèi)了,有需要的小伙伴直接拿走使用吧。
    2015-01-01
  • JS使用for in有序獲取對象數(shù)據(jù)

    JS使用for in有序獲取對象數(shù)據(jù)

    這篇文章主要介紹了JS使用for in有序獲取對象數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評論