gpt4 book ai didi

javascript - 我可以检测传递给 javascript 方法的未使用的额外参数吗?

转载 作者:行者123 更新时间:2023-11-30 08:58:50 25 4
gpt4 key购买 nike

在 Javascript 中,我可以使用超过必要数量的参数调用任何方法,并且额外的参数会被默默地忽略。

例如

letters = ['a','b','c']
//correct
letters.indexOf('a')
//This also works without error or warning
letters.indexOf('a', "blah", "ignore me", 38)

有没有办法检测发生这种情况的情况?

我的动机是,根据我的经验,发生这种情况的情况通常是错误。通过代码分析或在运行时识别这些错误将有助于追踪这些错误。

这些情况在人们期望可能没有发生的基本类型发生变化时尤为普遍。在发生这种情况时记录警告

例如

Date.parse('02--12--2012', 'dd--MM--YYYY')

注意事项:明确地说,我想要一个不涉及我在我的代码和其他人的代码中散布检查的解决方案。

最佳答案

您可以使用arguments 对象。

function myFunction(param1,param2)
{
if (arguments.length!=2)
{
// wrong param number!
}
...
}

根据您的编辑:如果您想实现一种自动检查形式,无需触及原始功能:

您仍然需要处理每个函数:

functionName = debug(functionName, numberOfExpectedArgs);

此操作通过检查参数数量来包装函数。

所以我们保留一个示例函数未触及:

// this is the original function... we want to implement argument number
// checking without insertint ANY debug code and ANY modification

function myFunction(a,b,c)
{
return a + " " + b + " " + c;
}

// the only addition is to do this...
myFunction = debug(myFunction,3); // <- implement arg number check on myFunction for 3 args

// let's test it...
console.log(myFunction(1,2,3));
console.log(myFunction(1,2));

你需要实现这个debug()函数:

function debug(f, n)
{
var f2 = f;
var fn = function()
{
if (arguments.length!=n) console.log("WARNING, wrong argument number");
return f2.apply(f2, arguments);
};
return fn;
}


根据已定义的函数,此解决方案是完全透明的,因此它可能正是您所寻求的。我强烈建议检查弃用(有一些)和跨浏览器兼容性。

关于javascript - 我可以检测传递给 javascript 方法的未使用的额外参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com