<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
        主站蜘蛛池模板: 无码免费又爽又高潮喷水的视频 | 一级做a爰片久久免费| 最近免费中文字幕视频高清在线看 | 久久久亚洲欧洲日产国码农村| 久99久无码精品视频免费播放| 亚洲精品无码久久久久AV麻豆| 免费国产va视频永久在线观看| 亚洲精品国产精品国自产观看| 新最免费影视大全在线播放| 国产a v无码专区亚洲av| jyzzjyzz国产免费观看| 在线观看亚洲av每日更新| 国产一级片免费看| 亚洲一区二区三区夜色| 成人免费福利视频| 亚洲AV无码一区二区三区牛牛| 成全视频在线观看免费高清动漫视频下载| 亚洲天然素人无码专区| 免费人妻无码不卡中文字幕18禁| 一级特级女人18毛片免费视频| 日本亚洲成高清一区二区三区| 99爱在线精品视频免费观看9| 亚洲中文久久精品无码1| 免费看的成人yellow视频| 一区二区三区视频免费观看| 无码专区—VA亚洲V天堂| 成年在线观看网站免费| 国产精品亚洲а∨无码播放麻豆 | 亚洲av片劲爆在线观看| 3d成人免费动漫在线观看| 亚洲w码欧洲s码免费| 亚洲国产高清精品线久久| 高清一区二区三区免费视频| 国产精品亚洲精品观看不卡| 亚洲欧洲精品成人久久奇米网| 色欲国产麻豆一精品一AV一免费| 亚洲欧美日韩一区二区三区在线| 超清首页国产亚洲丝袜| 成人免费视频77777| 9久热这里只有精品免费| ww亚洲ww在线观看国产|