鍍金池/ 問答/HTML/ 今天看到一段代碼,不太明白

今天看到一段代碼,不太明白

export function createAction(type, payloadCreator = a => a, metaCreator) {
  return (...args) => {
    const action = {
      type,
      payload: payloadCreator(...args)
    };
    if (typeof metaCreator === 'function') {
      action.meta = metaCreator(...args);
    }
    return action;
  };
}

不太明白 return里的 ...args參數(shù) 是哪里來的

回答
編輯回答
雅痞

export 了一個函數(shù)的實(shí)現(xiàn),這里的 ...args 就是實(shí)例化的函數(shù)傳入的參數(shù)。
在這里好像就是一個偏函數(shù)的概念吧?

2017年4月9日 15:43
編輯回答
神經(jīng)質(zhì)

很明顯這個參數(shù)...args是函數(shù)createAction調(diào)用之后,再次調(diào)用,然后才傳入的。

如下:

var action = createAction();
action(/* 這里傳入args */);

建議了解一下函數(shù)柯里化。

2018年5月17日 12:17
編輯回答
尋仙

相當(dāng)于

    function createAction(type, payloadCreator = a => a, metaCreator) {
            return (...args) => {
                console.log(...args)
                const action = {
                type,
                payload: payloadCreator(...args)
                };
                if (typeof metaCreator === 'function') {
                action.meta = metaCreator(...args);
                }
                return action;
            };
            }
            var aaa =createAction();
            aaa('a','b','c');
2018年4月4日 14:45
編輯回答
紓惘
function createAction(){
  return (...arg)=>{
    console.log(...arg)
  }
}

var action =createAction()

var arr = [1,2,3]
action(arr)

去掉眼花繚亂的,看個根本

2017年1月27日 11:14
編輯回答
誮惜顏
function foo() {
    return function(...args) {
        console.log(...args);
    }
}
foo()(1,2,3);

// 進(jìn)一步分解
function foo(a, ...args) {
    console.log(a, ...args);
}
foo(1,2,3);

// ...是剩余參數(shù)的意思,具體看下es6語法

圖片描述

2017年2月12日 22:22