首页 > 解决方案 > 默认函数参数不起作用

问题描述

有一个具有默认参数值的函数

const range = (start = 0, stop, step = 1) => {
  console.log('start', start)
  console.log('stop', stop)
  console.log('step', step)
}

range(4)

请解释为什么控制台显示

start 4
stop undefined
step 1

虽然在我看来它应该出来

start 0
stop 4
step 1

因为我为 start 参数传递了一个默认值。如何纠正这种行为?谢谢

标签: javascriptfunctiondefault-arguments

解决方案


将第一个参数作为未定义传递 - 因为函数的参数是“位置的”,即第一个参数获取调用中的第一个值,第二个获取第二个等

如果您undefined作为参数传递,则分配“默认值”(如果存在)

const range = (start = 0, stop, step = 1) => {
  console.log('start', start)
  console.log('stop', stop)
  console.log('step', step)
}

range(undefined, 4)

或者使用单个对象作为参数,具有属性 start、stop 步骤

也可以将其称为自我记录

const range = ({start = 0, stop, step = 1}) => {
  console.log('start', start)
  console.log('stop', stop)
  console.log('step', step)
}

range({stop:4})


推荐阅读