JavaScript函数调用是否存在指定参数使用默认值的专用语法?
问题解答
JavaScript 没有专门的语法占位符,用来标记指定位置的参数直接使用默认值。JS 函数的实参是严格按照传入位置顺序匹配形参的,不存在“跳过某位置参数”的原生语法。
可行实现方案
1. 显式传入undefined触发默认值
ES6 的默认参数规则明确:当对应形参位置接收到的值严格等于undefined时(包含不传该位置参数、显式传入undefined两种情况),就会使用预设的默认值。
你当前的场景可以直接按下面的方式调用:
doSomething(undefined, true);
注意:不要尝试写
doSomething(, true)这类留空占位的调用形式,这属于JS语法错误,会直接导致代码无法运行。另外只有传入undefined会触发默认值,传入null、0、false、''等其他假值都不会触发,会直接将传入值绑定到对应形参上。
运行验证效果:
const doSomething = (defaultVal = 'me default', useThis = false) => { console.log(defaultVal, useThis); }; doSomething(undefined, true); // 控制台输出:me default true
2. 重构为对象参数(推荐多可选参数场景使用)
如果函数有多个可选参数,经常需要跳过靠前的参数、只指定靠后的参数,更推荐把参数设计为单个配置对象,配合对象解构设置默认值,传参时完全不需要关心参数位置:
const doSomething = ({ defaultVal = 'me default', useThis = false } = {}) => { console.log(defaultVal, useThis); }; // 仅指定useThis参数即可,不需要考虑位置 doSomething({ useThis: true }); // 控制台输出:me default true
这种写法是目前前端开发中处理多可选参数的通用实践,可读性和可维护性都比按位置传参更高。
内容的提问来源于stack exchange,提问作者Patrick Johnson
相关产品推荐
相关产品推荐

