Javascript 检查函数在module.exports中是否有多个参数
我想做一些类似的事情:Javascript 检查函数在module.exports中是否有多个参数,javascript,mocha.js,chai,Javascript,Mocha.js,Chai,我想做一些类似的事情: module.exports = (obj) => { if (arguments.length > 1) { throw new Error('Must only pass in single argument'); } } 当我记录参数时,我得到了关于模块本身的元数据,并且看不到传入的参数。有没有办法检查是否传入了其他参数 这是我的测试: it('should reject multiple arguments', () =>
module.exports = (obj) => {
if (arguments.length > 1) {
throw new Error('Must only pass in single argument');
}
}
当我记录参数时,我得到了关于模块本身的元数据,并且看不到传入的参数。有没有办法检查是否传入了其他参数
这是我的测试:
it('should reject multiple arguments', () => {
expect(fn({ data: 1}, { data: 2})).to.throw(Error, 'Too many inputs');
});
参数
不适用于ES6 arrow函数。
试试这个…args
function f(a, b, ...args) {
}
来源:
参数
不适用于ES6箭头函数。
试试这个…args
function f(a, b, ...args) {
}
资料来源:如注释所示:
箭头函数表达式的语法比函数表达式短,并且不绑定自己的this
,参数
,super
或new.target
换句话说,要检查arrow函数获得的参数是否比预期的多,使用arguments
不起作用(与普通函数一样),因此应使用:
请注意:
箭头函数表达式的语法比函数表达式短,并且不绑定自己的this
,参数
,super
或new.target
换句话说,要检查arrow函数获得的参数是否比预期的多,使用arguments
不起作用(与普通函数一样),因此应使用:
正如其他人提到的,箭头功能是问题的原因 然而,在这种情况下,为了正确定义API,使用rest参数并不是一个好的解决方案 要保持与所需的内容兼容(显示函数只接受一个参数),应执行以下操作:
module.exports = function (obj) {
if (arguments.length > 1) {
throw new Error('Must only pass in single argument');
}
}
在您的arrow函数中,参数实际上与您不期望的内容相关联。
查看它的实际功能。正如其他人提到的,箭头功能是问题的原因 然而,在这种情况下,为了正确定义API,使用rest参数并不是一个好的解决方案 要保持与所需的内容兼容(显示函数只接受一个参数),应执行以下操作:
module.exports = function (obj) {
if (arguments.length > 1) {
throw new Error('Must only pass in single argument');
}
}
在您的arrow函数中,参数实际上与您不期望的内容相关联。
查看它的实际功能。“但是,为了正确定义API,使用rest args不是一个好的解决方案。”您能详细说明一下这一点吗?因为函数(obj,…restArgs){…}
表明此函数正在使用…restArgs
,而目标是禁止这样做。i、 e.API与目的相冲突。“但是,为了正确定义API,使用rest参数不是一个好的解决方案。”您能详细说明这一点吗?因为函数(obj,…restArgs){…}
表明此函数正在使用…restArgs
,而目标是禁止这样做。i、 e.API与意图相冲突。