如何在JavaScript函数缺少必填参数时终止执行并抛出错误
JavaScript函数必填参数校验实现方案
你可以通过主动抛出错误的方式实现需求,JavaScript中未被捕获的Error会直接终止程序执行,同时输出对应的错误提示信息,以下是两种常用实现方式:
方式1:手动循环校验(兼容性好)
这种写法兼容低版本JS运行环境,也方便扩展自定义校验规则:
func({ system: "test1", type: "test2", summary: "test3", description: "test4", }); function func (c) { // 先校验参数对象是否传入 if (!c) { throw new Error('func函数缺少必填的配置参数对象') } // 定义所有必填字段列表 const requiredFields = ['system', 'type', 'summary', 'description'] // 遍历校验每个字段 for (const field of requiredFields) { // 用hasOwnProperty避免原型链属性干扰,判断undefined避免把空字符串、0等合法假值判定为缺失 if (!c.hasOwnProperty(field) || c[field] === undefined) { throw new Error(`func函数缺少必填参数:${field}`) } } // 后续业务逻辑 console.log(c); console.log(c.system); console.log(c.type); console.log(c.summary); console.log(c.description); };
方式2:ES6解构+默认值实现(代码更简洁)
利用ES6参数默认值的特性,定义通用的必填参数报错工具函数,写法更精简:
// 通用必填参数报错工具 const required = (paramName) => { throw new Error(`func函数缺少必填参数:${paramName}`) } // 解构参数时直接绑定默认值为报错函数,缺参时自动触发 function func ({ system = required('system'), type = required('type'), summary = required('summary'), description = required('description') } = {}) { // 后续业务逻辑 console.log(system, type, summary, description); };
两种方式在参数缺失时都会直接抛出错误终止程序执行,控制台会清晰展示缺失的参数名称,完全替代原来赋值默认值的逻辑。如果需要不终止全局程序,也可以在外层调用时用try...catch捕获错误做自定义处理。
内容的提问来源于stack exchange,提问作者Sandra Schlichting
相关产品推荐
相关产品推荐

