【发布时间】:2021-08-17 13:30:27
【问题描述】:
有一个函数具有默认参数值
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 参数传递了一个默认值。如何纠正这种行为?谢谢
【问题讨论】:
-
“虽然我认为它应该出来” - 为什么?你只传入了第一个参数。 --- 如果您不想关心参数顺序,请使用对象。
-
参数顺序很重要。 Javascript 不会自动将参数值分配给您没有为其提供默认值的参数。将
range(4)更改为range(undefined, 4, undefined) -
或者,使用单个对象作为参数...
const range = ({start = 0, stop, step = 1}) => {和range({stop:4}) -
@AdilBimzagh 不是假的。只有未定义。
fn = (a = 'hello') => a; fn(null); fn(false); // null and false -
@AdilBimzagh "...仅当该参数的值是假的时" - 不。如果值为
undefined
标签: javascript function default-arguments