我是javascript编程(和一般而言的脚本语言)的新手,但是当我出现语法错误或意外声明全局变量时,我一直在使用JS Lint来提供帮助。
但是,有一种JS Lint无法解决的情况,我觉得这非常方便。请参见下面的代码:
(function () {
"use strict";
/*global alert */
var testFunction = function (someMessage) {
alert("stuff is happening: " + someMessage);
};
testFunction(1, 2);
testFunction();
}());
请注意,我将错误数量的参数传递给testFunction。在有意遗漏一个参数或添加一个这样的参数的情况下,我从未预见过自己。但是,JS Lint和JS Hint都不认为这是错误。
还有其他工具可以帮助我吗?还是有某些原因为什么不应该对传递这样的参数进行错误检查?
最佳答案
使用任何静态分析工具通常都不可能做到这一点。有几个原因:
var obj = { myFunc : function(a,b) { ... } };
var doSomething(x) { x.myFunc = function(a) { ... }; };
doSomething(obj);
obj.myFunc();
无法知道
myFunc
在调用doSomething
之后现在需要使用不同数量的args。JavaScript是一种动态语言,您应该接受并接受它。
建议您不要依赖于掉毛来捕获并非旨在解决的问题,我建议向执行检查的函数中添加前提条件。
创建一个帮助函数,如下所示:
function checkThat(expression, message) {
if (!expression) {
throw new Error(message);
}
}
然后像这样使用它:
function myFunc(a, b) {
checkThat(arguments.length === 2, "Wrong number of arguments.");
并且通过适当的单元测试,您应该永远不会在生产中看到此错误消息。
关于javascript - 我可以防止使用JS Lint,JS Hint或其他工具将错误数量的参数传递给方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31195952/