当您在 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 是可以的,但任何其他关于如何找到缺失参数的实用技巧也可以。
如果您的函数需要传递某些参数,您应该在函数验证过程中专门检查这些参数。
延长Function
object 不是最好的主意,因为许多库依赖于未传递的默认参数的行为(例如 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(使用前将#替换为@)