相互递归和 JSLint - 函数在定义之前使用

joh*_*ell 6 javascript recursion jslint mutual-recursion node.js

如果我编写以下代码,JSLint 会抱怨在定义之前使用'isOdd'。有没有办法编写相互递归的代码并且仍然取悦JSLint?

var isEven = function(n) {
    if (n === 0) {
        return true;
    }
    return isOdd(n - 1);
};

var isOdd = function(n) {
    if (n === 0) {
        return false;
    }
    return isEven(n - 1);
};
Run Code Online (Sandbox Code Playgroud)

joh*_*ell 1

将这些函数转换为对象的方法可以消除来自 JSLint 的错误消息。这也可以更好地减少全局名称空间的污染。

var numUtil = {
    isEven: function(n) {
        if (n === 0) {
            return true;
        }
        return this.isOdd(n - 1);
    },
    isOdd: function(n) {
        if (n === 0) {
            return false;
        }
        return this.isEven(n - 1);
    }
};
Run Code Online (Sandbox Code Playgroud)