在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ ES6-函數(shù)解構(gòu)

ES6-函數(shù)解構(gòu)

clipboard.png

函數(shù)的解構(gòu)沒(méi)太懂這個(gè)里面紅箭頭那些地方,1.為什么會(huì)是undefined呢?不是 let {x,y}={x:0,y:1}的時(shí)候,x可以輸出等于0,y=1嗎,雖然x,y是模式,賦值是賦給x,y變量,那這里為什么不是[0,0]呢?

2.還有阮老師說(shuō)默認(rèn)值只有當(dāng)?shù)扔趗ndefined的時(shí)候才起作用,那let {x:1,y:2}={};x會(huì)等于1,y會(huì)等于2,是不是因?yàn)橛疫厸](méi)有設(shè)定x,y屬性,所以在右邊找不到x,y所以?xún)蓚€(gè)都undefined,x才等于1,y等于2?是這么理解的嗎

回答
編輯回答
笨小蛋

你可以從結(jié)構(gòu)時(shí)的等號(hào)來(lái)看:

function move({x, y} = { x: 0, y: 0}) {...}

這里等號(hào)左邊的部分會(huì)被看作一個(gè)整體來(lái)賦默認(rèn)值,在題中第二個(gè) move 里就是他的唯一一個(gè)輸入值。
如果有輸入,則對(duì)這個(gè)輸入值進(jìn)行結(jié)構(gòu),如果沒(méi)有輸入,則使用默認(rèn)值。

可以注意到的是前面的 move 里有三個(gè)等號(hào),后面 move 只有一個(gè)等號(hào)

2018年9月12日 05:16
編輯回答
絯孑氣

我今天剛好看到這塊,第一個(gè)函數(shù)包含了函數(shù)參數(shù)默認(rèn)值和對(duì)象解構(gòu)默認(rèn)值,而第二個(gè)函數(shù)僅僅是函數(shù)參數(shù)默認(rèn)值。

2018年3月1日 16:59
編輯回答
無(wú)標(biāo)題

樓上已經(jīng)回答你了,這是賦默認(rèn)值一種方式,建議通讀ES6 文檔

2017年3月5日 02:51
編輯回答
久不遇

move({x: 3}),這里的 {x: 3} 對(duì)象的 yundefined,
所以結(jié)果是 [3, undefined]

注意第二種 move 和 第一個(gè) move 的區(qū)別,
第一個(gè) move 中:

function move({x = 0, y = 0} = {}) {
  return [x, y];
}
// 等價(jià)于
function move(a) {
  if (a === undefined) {
    a = {}
  }

  let x = a.x
  if (x === undefined) {
    x = 0
  }
  let y = a.y
  if (y === undefined) {
    y = 0
  }

  return [x, y]
}

而第二個(gè) move 相當(dāng)于:

function move(a = {x: 0, y: 0}) {
  return [a.x, a.y];
}

// 等價(jià)于
function move(a) {
  if (a === undefined) {
    a = {x: 0, y: 0}
  }

  // 此處沒(méi)有為 a.x 和 a.y 設(shè)置默認(rèn)值的過(guò)程
  return [a.x, a.y];
}

也就是當(dāng) a 為 undefined 時(shí),a 取默認(rèn)值 {x: 0, y: 0}.

2018年2月22日 13:42