91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES6函數參數解構

發布時間:2020-06-15 15:38:14 來源:網絡 閱讀:220 作者:sendoffice 欄目:web開發

ES6函數參數解構

常規的JavaScript若要給函數傳遞的參數是一個對象,需要像下面這樣來實現:

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

在函數內部通過對象屬性的形式來獲取值。

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

1.ES6的對象可以實現簡寫

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的解構是用來給變量賦值的

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

結合 1 ,這里的 {firstName, lastName}實際上就是 {firstName: firstName, lastName: lastName},在這個對象里,顯然冒號后面的屬性值才是我們需要賦值的變量,解構會在右側表達式對象中找到和左側對象相同的屬性名,以該屬性值為對應變量賦值,如果沒找到,那么該變量值為undefined。

有了上述的兩點,我們可以將對象解構應用到為函數傳遞參數上

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

還可以給參數提供默認初始值:


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

看起來像是也達到了提供參數默認值的效果,但是原因是右邊的firstName會作為對象解構賦值給左邊的firstName,這并不是函數參數的默認值;
下面的例子中,傳遞的參數person會直接取代右邊的{firstName: 'lebron'},然后被當作真正的解構賦值對象。


function sayName({ firstName, lastName = 'bar' } = {firstName: 'lebron'}) {
  console.log( firstName + ' ' + lastName );
}
let person = {
  wrongFirstName: 'Stephen',
  lastName: 'Curry'
}
sayName(person); // undefined Curry
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

称多县| 舒兰市| 伊宁县| 太仆寺旗| 佛坪县| 铜川市| 枣阳市| 漳浦县| 墨江| 武义县| SHOW| 南汇区| 防城港市| 石林| 和林格尔县| 清苑县| 临朐县| 沂源县| 临武县| 陇川县| 水城县| 彰化市| 新巴尔虎左旗| 西昌市| 眉山市| 丹寨县| 靖西县| 班玛县| 台江县| 荔浦县| 赤壁市| 霍山县| 青河县| 三台县| 闸北区| 安陆市| 依安县| 合阳县| 三门县| 隆子县| 慈溪市|