es6如何使用非默认参数之前的默认参数?

tin*_*lyx 6 javascript default-value ecmascript-6

我对默认参数有点生疏,我想知道如果参数没有默认参数,我怎么能使用参数的默认值?

从Redux.js例下面,默认值时将{}用于state参数是有用的?(因为你不能默认下一个参数)?

const todo = (state = {}, action) => {
  switch (action.type) {
    //...

    case 'TOGGLE_TODO':
      if (state.id !== action.id) {
        return state
      }

      return Object.assign({}, state, {
        completed: !state.completed
      })

    default:
      return state
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

有问题的用法是特定的redux.js.由于第二个参数没有默认值,因此第一个参数的默认值在函数调用中通常是无用的.

但是,正如之前在同一个关于Reducers的教程中所说:

Redux将首次调用我们的减速器处于未定义状态.这是我们返回应用程序初始状态的机会:

function todoApp(state, action) {
  if (typeof state === 'undefined') {
    return initialState
  }
  //...
  return state
}
Run Code Online (Sandbox Code Playgroud)

所以这里没有真正省略第一个参数.Redux undefined在初始化时提供其值.只有在这种情况下,教程才使用默认参数语法作为快捷方式:

function todoApp(state = initialState, action) {
  //...
  return state
}
Run Code Online (Sandbox Code Playgroud)