如果我有这样的话:
var blah = function() { };
然后在代码中使用了blah,JSLint提示说删除空块是什么?
答案 0 :(得分:27)
我不知道jsLint
的想法是什么,但如果这是一个问题并且您需要一个解决方案,那么您可以执行以下操作:
var blah = function() { return undefined; }; // or just return;
更新:我认为,Bergi
的猜测是正确的,因为Required Blocks
部分的jslint网站:
JSLint期望if,while,do和for语句将用于 块{即括号括在括号中} .JavaScript允许 如果要这样写:if(condition)语句;那个表单是 已知会导致许多程序员的项目出错 处理相同的代码。这就是为什么JSLint期望使用a 块:
if (condition) { statements; }
经验表明,这种形式更具弹性。
因此,它可能只检查空块{ }
并使空白函数无效。
答案 1 :(得分:5)
如果您询问JsLint选项关闭此警告的是:“debug:true”
奇怪的是,文档没有提到这种行为:
“容忍调试器语句”| debug | true 如果允许调试器语句。在投入生产之前,将此选项设置为 false 。
但是如果你看一下the code,你可以看到它不会在调试选项设置为true的情况下发出警告:
function block(kind) {
// A block is a sequence of statements wrapped in braces.
...
if (kind !== 'catch' && array.length === 0 && !option.debug) {
curly.warn('empty_block');
}
...
}
答案 2 :(得分:4)
很多代码检查器会检查这类事情。这并不意味着您永远不会拥有空代码块。有时候有充分理由拥有它们。但经常意味着程序员忘记编写实现。 :)
我喜欢做的是在函数体中添加注释,解释它为什么是空的。这应该会取消警告,但可能不会取决于代码检查程序是否认为代码块的注释为“空”。
var blah = function() { /* empty because ... */ };
答案 3 :(得分:3)
如果您打算将该函数用作new
运算符的构造函数:
// Returns the instance that was just created with the new operator.
var ClassLikeFunction = function(){
return this;
};
另一方面,如果故意是一个没有返回值的空白函数:
// Returns the same value as a function that returned nothing.
var blankFunction = function(){
return undefined;
};
答案 4 :(得分:3)
使用lambda表达式:
const blah = () => void 0;
这将清楚地表明blah
是一个返回undefined
的空函数。
答案 5 :(得分:1)
此
{
...
}
被认为是一个代码块,提示让你知道它是空的(里面没有命令)。你不必删除它,因为@ Katana314说,它可能是有意的。
答案 6 :(得分:0)
让我对这个问题的看法是我的命名空间中有一个空函数
当我调用该函数时,
TypeError: MyNamespcae.myFunction is not a function
所以不要创建一个空函数,至少添加一个像void(0)的语句;或返回null;