• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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

    其他

    不能使用圓括號的情況

  • 變量聲明語句
  • 函數參數
  • 賦值語句的模式
  • 可以使用圓括號的情況

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

  • 交換變量的值
  • 從函數返回多個值
  • 函數參數的定義
  • 提取JOSN數據
  • 函數參數的默認值
  • 遍歷Map結構
  • 輸入模塊的指定方法
  • 總結

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产小呦泬泬99精品| 精品国产综合成人亚洲区| 久久精品国产一区| 国产成人精品久久免费动漫| 成人国产精品999视频| 青青草97国产精品免费观看| 中文字幕精品一区| 十八18禁国产精品www| 精品人妻中文字幕有码在线| 992tv精品视频tv在线观看| 久久九九青青国产精品| 亚洲av永久无码精品漫画| 亚洲国产精品无码久久SM | 亚洲国产精品久久久久久| 亚洲精品视频在线| 精品无码一区在线观看| 久久亚洲精品中文字幕三区| 久久精品欧美日韩精品| 麻豆精品三级全部视频| 国产精品第一页在线| 亚洲精品成人片在线观看| 国语自产精品视频在线区| 最新国产精品无码| 久久99精品国产麻豆宅宅| 精品国产福利在线观看| 无码精品国产VA在线观看 | 91精品在线看| 精品无码国产一区二区三区AV| 亚洲精品成a人在线观看| 免费人欧美日韩在线精品| 国产亚洲精品看片在线观看 | 欧美精品/日韩精品/国产精品| 69国产成人综合久久精品| 国产女人精品视频国产灰线| 日产精品一线二线三线芒果| 自怕偷自怕亚洲精品| 日韩精品一二三区| 国产精品999| 午夜福利麻豆国产精品| 久久狠狠一本精品综合网| 国产精品186在线观看在线播放|