最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

結(jié)合前一個例子,你既可以改變量名又能賦值默認(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的某些屬性的值也是一個對象或數(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)值場景,很多時候我們也需要在解構(gòu)數(shù)組的時候加上默認(rèn)值以滿足業(yè)務(wù)需要。

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

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

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

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

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

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

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

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

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

如果是想在一個數(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ù)會返回數(shù)組類型的結(jié)果,通過數(shù)組解構(gòu)可以直接拿值:

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

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

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

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

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

相關(guān)文章

  • JavaScript寫的一個自定義彈出式對話框代碼

    JavaScript寫的一個自定義彈出式對話框代碼

    最近閑來無事,用js自己做了一個彈出式對話框,需要應(yīng)用彈出式對話框的朋友可以參考下。
    2010-01-01
  • Bootstrap模態(tài)框水平垂直居中與增加拖拽功能

    Bootstrap模態(tài)框水平垂直居中與增加拖拽功能

    最近開發(fā)一個CMS系統(tǒng)使用上了Bootstrap,在開發(fā)一個添加某些選項時,打算彈出一個模態(tài)框,但是發(fā)現(xiàn),模態(tài)框不會垂直居中到屏幕上,而是在屏幕上方,通過查閱資料才解決此問題,下面小編給大家分享解決思路
    2016-11-11
  • JS讀寫CSS樣式的方法匯總

    JS讀寫CSS樣式的方法匯總

    這篇文章主要為大家詳細(xì)匯總了JS讀寫CSS樣式的方法,內(nèi)容詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JavaScript實(shí)現(xiàn)復(fù)制粘貼剪切功能三種方法

    JavaScript實(shí)現(xiàn)復(fù)制粘貼剪切功能三種方法

    這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)復(fù)制粘貼剪切功能的相關(guān)資料,在實(shí)際案例的操作過程中,不少人都會遇到這樣的開發(fā)需求,文中通過代碼將三種方法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • JS實(shí)現(xiàn)簡易日歷效果

    JS實(shí)現(xiàn)簡易日歷效果

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡易日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Vue之vue-tree-color組件實(shí)現(xiàn)組織架構(gòu)圖案例詳解

    Vue之vue-tree-color組件實(shí)現(xiàn)組織架構(gòu)圖案例詳解

    這篇文章主要介紹了Vue之vue-tree-color組件實(shí)現(xiàn)組織架構(gòu)圖案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 微信小程序簽到功能

    微信小程序簽到功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序簽到功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • javascript 動態(tài)加載 css 方法總結(jié)

    javascript 動態(tài)加載 css 方法總結(jié)

    有時候我們在設(shè)計網(wǎng)頁的時候想動態(tài)的加載css文件,并不是將css文件寫死在頁面中,這時就可以使用下面方法.
    2009-07-07
  • JavaScript 數(shù)組中最大最小值

    JavaScript 數(shù)組中最大最小值

    本文給大家匯總介紹的是獲取JavaScript 數(shù)組中最大最小值的方法和示例,非常的詳細(xì)和全面,希望對大家學(xué)習(xí)JavaScript能夠有所幫助
    2016-06-06
  • 淺談JavaScript之事件綁定

    淺談JavaScript之事件綁定

    關(guān)于 JavaScript 的事件綁定在網(wǎng)上已經(jīng)有不少相關(guān)的資料了,今天這篇文章也是在被同事問及的時候才順便把它記錄下來,算是 JavaScript 事件綁定中的一個小技巧,如果能在工作中善加利用,會有出其不意的效果
    2013-07-07

最新評論

前郭尔| 罗江县| 沈阳市| 无为县| 自治县| 湾仔区| 南乐县| 额敏县| 灌阳县| 海林市| 彰化县| 双桥区| 新晃| 湖南省| 高阳县| 中方县| 萨迦县| 洛宁县| 白玉县| 阿合奇县| 潢川县| 南郑县| 苏尼特右旗| 修文县| 宝鸡市| 香河县| 佛教| 天气| 会宁县| 静乐县| 宣化县| 泾源县| 雅安市| 新宁县| 进贤县| 永春县| 横峰县| 怀远县| 含山县| 张掖市| 宝丰县|