ES6函數(shù)參數(shù)解構(gòu)-創(chuàng)新互聯(lián)

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

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

站在用戶的角度思考問題,與客戶深入溝通,找到祥云網(wǎng)站設(shè)計與祥云網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋祥云地區(qū)。
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)部通過對象屬性的形式來獲取值。

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

1.ES6的對象可以實現(xiàn)簡寫

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

這里的對象寫法就等同于下面的寫法:

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}實際上就是 {firstName: firstName, lastName: lastName},在這個對象里,顯然冒號后面的屬性值才是我們需要賦值的變量,解構(gòu)會在右側(cè)表達(dá)式對象中找到和左側(cè)對象相同的屬性名,以該屬性值為對應(yīng)變量賦值,如果沒找到,那么該變量值為undefined。

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

function sayName({ firstName, lastName }) {
  console.log( firstName + ' ' + lastName );// 注意這里可以直接訪問到兩個解構(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會作為對象解構(gòu)賦值給左邊的firstName,這并不是函數(shù)參數(shù)的默認(rèn)值;
下面的例子中,傳遞的參數(shù)person會直接取代右邊的{firstName: 'lebron'},然后被當(dāng)作真正的解構(gòu)賦值對象。

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

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:ES6函數(shù)參數(shù)解構(gòu)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://bm7419.com/article30/gjdpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、響應(yīng)式網(wǎng)站、小程序開發(fā)Google、微信小程序手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名