强制 JavaScript 中缺少参数

2024-01-03

当您在 JavaScript 中调用函数并且错过传递某些参数时,什么也不会发生。

这使得代码更难调试,所以我想改变这种行为。

我见过如何最好地确定参数是否未发送到 JavaScript 函数 https://stackoverflow.com/questions/411352/how-best-to-determine-if-an-argument-is-not-sent-to-the-javascript-function但我想要一个具有恒定数量的键入代码行的解决方案;无需为每个函数键入额外的代码。

我考虑过通过修改(“第一类”)Function 对象的构造函数,自动为所有函数的代码添加该代码的前缀。

灵感来自更改 JavaScript 中的构造函数 https://stackoverflow.com/questions/6529195/changing-constructor-in-javascript我首先测试了是否可以更改 Function 对象的构造函数,如下所示:

function Function2 () {
    this.color = "white";
}

Function.prototype = new Function2();
f = new Function();
alert(f.color);

但它警告“未定义”而不是“白色”,所以它不起作用,所以我没有进一步探索这种技术。

您知道任何级别上这个问题的解决方案吗?深入研究 JavaScript 是可以的,但任何其他关于如何找到缺失参数的实用技巧也可以。


如果您的函数需要传递某些参数,您应该在函数验证过程中专门检查这些参数。

延长Functionobject 不是最好的主意,因为许多库依赖于未传递的默认参数的行为(例如 jQuery 不向其作用域传递任何内容)undefined多变的)。

我倾向于使用两种方法:

1) 函数需要一个参数才能工作

var foo = function (requiredParam) {
    if (typeof requiredParam === 'undefined') {
        throw new Error('You must pass requiredParam to function Foo!');
    }

    // solve world hunger here
};

2) 未传递但可以默认为某个参数的参数(使用 jQuery)

var foo = function (argumentObject) {
    argumentObject = $.extend({
        someArgument1: 'defaultValue1',
        someArgument2: 'defaultValue2'
    }, argumentObject || {});

    // save the world from alien invaders here
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制 JavaScript 中缺少参数 的相关文章

随机推荐