最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ES6函數(shù)參數(shù)解構(gòu)

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

常規(guī)的JavaScript若要給函數(shù)傳遞的參數(shù)是一個(gè)對(duì)象,需要像下面這樣來實(shí)現(xiàn):

成都創(chuàng)新互聯(lián)從2013年開始,先為岳陽(yáng)縣等服務(wù)建站,岳陽(yáng)縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為岳陽(yáng)縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

function sayName(person) {
  if(Object.prototype.toString.call(person) == '[object Object]') {
    console.log( `${person.firstName} ${person.lastName}`);    
  }
}
sayName({firstName: 'Stephen', lastName: 'Curry'});

在函數(shù)內(nèi)部通過對(duì)象屬性的形式來獲取值。

采用ES6解構(gòu)的方式可以更加直觀便捷地為函數(shù)傳遞對(duì)象參數(shù)。
先要明確對(duì)象解構(gòu)的幾點(diǎn)基本知識(shí):

1.ES6的對(duì)象可以實(shí)現(xiàn)簡(jiǎn)寫

const firstName = 'Stephen';
const lastName = 'Curry';
const person = {
  firstName,
  lastName,
}
console.log(person.firstName + ' ' + person.lastName); // Stephen Curry

這里的對(duì)象寫法就等同于下面的寫法:

const person = {
  firstName: firstName,
  lastName: lastName,
}

2.ES6的解構(gòu)是用來給變量賦值的

const person = {
  firstName: 'Stephen',
  lastName: 'Curry',
};
const {firstName, lastName} = person;
console.log(firstName + ' ' + lastName);

結(jié)合 1 ,這里的 {firstName, lastName}實(shí)際上就是 {firstName: firstName, lastName: lastName},在這個(gè)對(duì)象里,顯然冒號(hào)后面的屬性值才是我們需要賦值的變量,解構(gòu)會(huì)在右側(cè)表達(dá)式對(duì)象中找到和左側(cè)對(duì)象相同的屬性名,以該屬性值為對(duì)應(yīng)變量賦值,如果沒找到,那么該變量值為undefined。

有了上述的兩點(diǎn),我們可以將對(duì)象解構(gòu)應(yīng)用到為函數(shù)傳遞參數(shù)上

function sayName({ firstName, lastName }) {
  console.log( firstName + ' ' + lastName );// 注意這里可以直接訪問到兩個(gè)解構(gòu)賦值的變量
}
let person = {
  firstName: 'Stephen',
  lastName: 'Curry'
}
sayName(person); // Stephen Curry

還可以給參數(shù)提供默認(rèn)初始值:


function sayName({ firstName = 'foo', lastName = 'bar'} = {}) {
  console.log( firstName + ' ' + lastName );
}
let person = {
  wrongFirstName: 'Stephen',
  lastName: 'Curry'
}
sayName(person); // foo Curry

思考一下下面這種寫法:

function sayName({ firstName, lastName = 'bar'} = {firstName: 'lebron'}) {
  console.log( firstName + ' ' + lastName );
}
sayName(); // lebron bar

看起來像是也達(dá)到了提供參數(shù)默認(rèn)值的效果,但是原因是右邊的firstName會(huì)作為對(duì)象解構(gòu)賦值給左邊的firstName,這并不是函數(shù)參數(shù)的默認(rèn)值;
下面的例子中,傳遞的參數(shù)person會(huì)直接取代右邊的{firstName: 'lebron'},然后被當(dāng)作真正的解構(gòu)賦值對(duì)象。


function sayName({ firstName, lastName = 'bar' } = {firstName: 'lebron'}) {
  console.log( firstName + ' ' + lastName );
}
let person = {
  wrongFirstName: 'Stephen',
  lastName: 'Curry'
}
sayName(person); // undefined Curry

新聞標(biāo)題:ES6函數(shù)參數(shù)解構(gòu)
鏈接分享:http://fisionsoft.com.cn/article/ghpgpo.html