... in ES6

在ES6中經(jīng)常看到 ... 這個(gè)操作符,經(jīng)常會(huì)讓人看的頭大,比如這樣的代碼

return {

    ...this.props,

    ...childMethods.reduce((acc, method) => ({
        ...acc,
        [method]: this[method]
    }), {})

};

rest參數(shù)

當(dāng)我們不確定函數(shù)參數(shù)的時(shí)候經(jīng)常使用arguments對(duì)象,ES6引入rest參數(shù)概念可以不再使用該對(duì)象

function add(...args) {
    return args.reduce(((result, value) => result + value), 0);
}

add(1, 2, 3); // 6

rest參數(shù)也可以用于對(duì)象賦值

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }
x // 1
y // 2
z // { a: 3, b: 4 }

有兩個(gè)需要注意的地方

  1. rest參數(shù)后面不能再有其它參數(shù)
  2. rest參數(shù)不記入函數(shù)的length屬性

拓展運(yùn)算符

拓展運(yùn)算符也是...,是rest參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為逗號(hào)分隔的參數(shù)序列,運(yùn)算符主要用于函數(shù)調(diào)用

console.log(...[1, 2, 3]);

console.log(1, 2, 3);

這兩句一樣一樣的,與解構(gòu)賦值結(jié)合

[first, ...rest] = [1, 2, 3]; // 效果同下

first =  [1, 2, 3][0], rest =  [1, 2, 3].slice(1);

[...'hello']  // [ "h", "e", "l", "l", "o" ]

在對(duì)象中也經(jīng)常使用

var props = {
  a:1,
  b:2,
  c:3
};

var obj = {
  ...props,
  d: 4,
  e: 5
}

等同于

var props = {
  a: 1,
  b: 2,
  c: 3
};

var obj = Object.assign({}, props, {
  d: 4,
  e: 5
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容