Javascript中的空函数

28 javascript jslint

如果我有这样的事情:

var blah = function() { };
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用了blah,JSLint提示说删除空块是什么?

The*_*pha 28

我不知道是什么jsLint想法,但如果这是一个问题,你需要一个解决方案,那么你可以做如下的事情:

var blah = function() { return undefined; }; // or just return;
Run Code Online (Sandbox Code Playgroud)

更新:我想,Bergi猜测是正确的,因为,在jslint网站的Required Blocks部分:

JSLint期望if,while,do和for语句将使用块{即括号括在括号中} .JavaScript允许if这样写:if(condition)语句;已知该表单有助于许多程序员正在使用相同代码的项目中的错误.这就是JSLint期望使用块的原因:

if (condition) { statements; }
Run Code Online (Sandbox Code Playgroud)

经验表明,这种形式更具弹性.

因此,它可能只是检查空块{ }并使空白函数无效.

  • 或者只是'返回;`? (9认同)
  • 如果你正在使用jQuery,那么你也可以调用$ .noop()而不是return; (3认同)

spl*_*tor 15

使用 lambda 表达式:

const blah = () => void 0;
Run Code Online (Sandbox Code Playgroud)

这将表明这blah是一个返回 的空函数undefined


小智 5

如果你问什么JsLint选项关闭这个警告是:"debug:true"

奇怪的是,文档没有提到这种行为:

"容忍调试器语句"| debug | 如果应该允许调试器语句,则为true.在投入生产之前将此选项设置为false.

但是如果查看代码,可以看到它不会在debug选项设置为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');
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)


jac*_*ism 2

{
    ...
}
Run Code Online (Sandbox Code Playgroud)

被视为代码块,提示让您知道它是空的(其中没有命令)。不过,您不必删除它,正如 @Katana314 所说,这可能是故意的。