<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ES6入門教程之變量的解構賦值詳解

        來源:懂視網 責編:小采 時間:2020-11-27 21:58:48
        文檔

        ES6入門教程之變量的解構賦值詳解

        ES6入門教程之變量的解構賦值詳解:前言 我們經常定義許多對象和數組,然后有組織地從中提取相關的信息片段。在ES6中添加了可以簡化這種任務的新特性:解構。解構是一種打破數據結構,將其拆分為更小部分的過程。本文將詳細介紹ES6解構賦值,下面話不多說了,來一起看看詳細的介紹吧 數組的解構
        推薦度:
        導讀ES6入門教程之變量的解構賦值詳解:前言 我們經常定義許多對象和數組,然后有組織地從中提取相關的信息片段。在ES6中添加了可以簡化這種任務的新特性:解構。解構是一種打破數據結構,將其拆分為更小部分的過程。本文將詳細介紹ES6解構賦值,下面話不多說了,來一起看看詳細的介紹吧 數組的解構

        在ES6之前想要為變量賦值,只能指定其值,如下:

        let a = 1;
        let b = 2

        而在ES6中可以寫成這樣,如下:

        let [a,b] = [1,2]
        // a = 1, b = 2

        值得注意的是,等式兩邊的值要對等,這樣左邊的變量才會被賦上右邊對應的值,如果不對等左邊的值將會出現undefined,如下寫法:

        let [foo,[[bar],baz]] = [1,[[2],3]]
        foo // 1
        bar // 2
        baz // 3

        注意:只有左右兩邊的 格式一定要對等,數量可以不對等。

        let [a,b,c] = [1,2]
        a = 1, b = 2, c = undefined
        
        let [a,,c] = [1,2,3]
        a = 1, c = 3
        
        let [a, ...b] = [1,2,3]
        a = 1, b = [2,3]
        
        let [a] = []
        let [b,a] = [1]
        a = undefined

        還有一種情況,等號左邊為數組,但是等號右邊為其他值,將會報錯。如下:

        let [a] = 1;
        let [a] = false;
        let [a] = NaN;
        let [a] = undefined;
        let [a] = null;
        let [a] = {};
        
        以上都會報錯

        但是如果左邊為數組,右邊為字符串,將會取字符串的第一個下標的值

        let [a] = '121321' a = '1'
        let [a] = 'adgasg' a = 'a'

        對于Set結構,同樣可以使用數組的解構賦值。

        let [x,y,z] = new Set([1,2,3])
        x = 1, y = 2, z = 3

        默認值

        解構賦值允許指定默認值

        let [a = 3] = [] // a:3
        let [a = 3,b] = [,4] // a:3 b:4
        let [a = 3,b] = [5,4] // a:5 b:4

        特殊

        let [a = 3] = [undefined] // a:3
        let [a = 3] = [null] // a:null

        Tips: 在es6中使用嚴格相等運算符,在結構賦值中如果需要默認值生效,則應對等的值為undefined的時候才會采用默認值,否則還是使用賦值。上面中null 不嚴格等于undefined++

        如果默認值的賦值為一個表達式,只有當等號右邊的賦值沒有值為undefined的時候,才會取表達式中的值,如下:

        function demo(){
         console.log('demo')
        }
        
        let [a = demo()] = [] // a: demo
        let [a = demo()] = [1] // a : 1

        對象的解構賦值

        與數組的不同點是,數組的元素必須和賦值的元素要位置一致才能正確的賦值,而對象的解構賦值則是等號兩邊的變量和屬性同名即可取到正確的值。否則值為 undefined

        let {a,b} = {a:'23',b:'3'}
        let {a,b} = {b:'3',a:'23'}
        
        // 上面兩個的值 都是 a: 23 b: 3
        
        let {a,b} = {a:'3',c:'d'}
        //a: 3 b: undefined

        對象的解構賦值還有將某一個現有對象的方法賦值到一個新的變量,如下:

        let {sin,cos} = Math
        // Math 中的sin cos 方法將賦值給變量 sin cos
        
        let {log} = console
        // log(2) === console.log(2)

        如果等號左邊的變量名不能和等號右邊的對象的屬性名一致,則必須寫成如下格式:

        let {a:b} = {a:'ss'} // b:ss
        //a是屬性名,b才是實際賦值的變量名

        對象的解構賦值一樣是可以嵌套解構的,如下:

        第一種:
        
        let obj = {
        	p:[
        	'Hello',
         {y:'world'}
        	]
        }
        
        let {p:[x,{y}]} = obj 
        // x: Hello, y: world
        
        這邊的p只是屬性不是變量,如果p想賦值可以寫成:
        
        let {p,:[x,{y}]} = obj
        
        第二種:
        const a = {
        	loc: {
        	t :1,
        	b :{
        	c:1,
        	d:2	
        	}
        	}
        }
        let {loc:{t,b:{c,d}}} = a
        或者
        let {loc,loc:{t,b,b:{c,d}}} = a

        嵌套賦值

        let o = {}, arr = []
        
        ({foo:o.prop,bar: arr[0]} = {foo:123,bar:true})
        //o: 123, arr = [true]

        如果解構模式 是嵌套的對象,如果子對象所在的父屬性不存在,則會報錯,如下:

        let {foo:{bar}} = {baz:'baz'} //報錯

        默認值

        let {x = 3} = {}
        // x: 3
        
        let {x,y = 5} = {x : 1}
        // x: 1, y: 5
        
        let {x: y = 5} = {}
        // y = 5
        
        let {x: y = 5} = {x : 4}
        // y = 4
        
        let {x: y = 'hhhh'} = {}
        //y = 'hhhh'
        
        Tips:以上左邊 x為屬性名,y為變量
        
        
        let {x = 5} = {x: undefined}
        // x: 5
        
        let {x = 4} = {x: null}
        // x: null
        
        同數組一樣遵循 嚴格等于 
        只有右邊為undefined的時候默認值才會生效

        注意點:

        1)不能將已聲明的變量用于解構賦值,因為已經是一個代碼塊。

        字符串的解構賦值

        如果賦值的對象是數組,字符串將被分割為數組的格式,一一對應賦值

        let [a,b] = 'ha'
        // a = h , b = a
        
        同時可以獲得字符串的長度:
        
        let {length:len} = '12121'
        // len = 5

        數值和布爾值的解構賦值

        如果等號右邊是數字或者布爾值 則轉換成對象或者說,除了是數組和對象,其他值都將轉換成對象,null 和 undefined 除外。如下:

        let {t:s} = 123
        let {t: s} = true

        函數參數的解構賦值

        function add([x,y]){
         return x+y
        }
        add([3,5]) // 8
        
        [[3,5],[6,7]].map(([a,b]) => a + b)
        //8 , 13
        
        function m({x=3, y=4} = {}){
         return [x,y]
        }
        m({x:33,y:8}) // [33,8]
        m({x:32}) // [32,4]
        m({}) // [3,4]
        m() // [3,4]
        
        function m({x,y} = {x=0,y=0}){
         return [x,y]
        }
        m({x:33,y:8}) // [33,8]
        // 代替右邊的 x:0, y:0 所以是傳值 33 8
        
        m({x:32}) // [32,undefined]
        //因為傳值替代右邊的賦值,但是只有x沒有y
        //所以y是取 左邊y的默認值,因為你沒有賦值 為undefined
        
        m({}) // [undefined,undefined] 
        // 取左邊x,y的默認值,因為沒有賦值 為undefined
        
        m() // [0,0]
        // 沒有傳值,使用本身的賦值 都是0

        其他

        不能使用圓括號的情況

      1. 變量聲明語句
      2. 函數參數
      3. 賦值語句的模式
      4. 可以使用圓括號的情況

      5. 賦值語句的非模式部分,可以使用圓括號
      6. 解構賦值的用途

      7. 交換變量的值
      8. 從函數返回多個值
      9. 函數參數的定義
      10. 提取JOSN數據
      11. 函數參數的默認值
      12. 遍歷Map結構
      13. 輸入模塊的指定方法
      14. 總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ES6入門教程之變量的解構賦值詳解

        ES6入門教程之變量的解構賦值詳解:前言 我們經常定義許多對象和數組,然后有組織地從中提取相關的信息片段。在ES6中添加了可以簡化這種任務的新特性:解構。解構是一種打破數據結構,將其拆分為更小部分的過程。本文將詳細介紹ES6解構賦值,下面話不多說了,來一起看看詳細的介紹吧 數組的解構
        推薦度:
        標簽: 變量 ES6 變量賦值
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 中国内地毛片免费高清| 国产情侣激情在线视频免费看| 亚洲爆乳精品无码一区二区三区 | 亚洲AV无码一区二区三区系列| 16女性下面无遮挡免费| 国产亚洲视频在线观看| 亚洲精品高清久久| 国产又大又粗又硬又长免费| 无码人妻AV免费一区二区三区| 亚洲人成人无码.www石榴| 国产亚洲一区二区在线观看| 无码一区二区三区免费视频| 国产在线精品一区免费香蕉 | 2021在线观看视频精品免费| 亚洲AV无码片一区二区三区| 亚洲精品综合一二三区在线| 少妇亚洲免费精品| 香蕉97超级碰碰碰免费公| 国产一级在线免费观看| 亚洲AV女人18毛片水真多| 亚洲国产综合91精品麻豆| 亚洲av中文无码| 美女视频黄是免费的网址| a毛片免费全部播放完整成| 亚洲成av人片天堂网无码】| 亚洲综合日韩中文字幕v在线| 亚洲国产精品成人AV无码久久综合影院| 亚洲网站在线免费观看| 少妇性饥渴无码A区免费| 男女超爽视频免费播放| 亚洲乱码卡三乱码新区| 亚洲AV无码成人精品区在线观看| 国产91在线免费| 成全视频免费高清| 国产国产人免费视频成69堂| 免费观看男人吊女人视频| yellow免费网站| 男女猛烈激情xx00免费视频 | 国产在线a免费观看| 一级毛片免费播放| A级毛片高清免费视频在线播放|