Javascript中的空函数

时间:2013-07-16 19:51:55

标签: javascript jslint

如果我有这样的话:

var blah = function() { };

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

7 个答案:

答案 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;