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

标签 javascript node.js recursion jslint mutual-recursion

如果我编写以下代码,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);
};

最佳答案

对于 JSLint,您必须在文件顶部添加全局变量指令,以便它忽略临时“未定义”函数和变量的使用。

/*global isOdd */

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);
};

您也可以在顶部声明 isOdd,但随后您将更改您的实际代码,因为 linting 程序不理解提升:

var isOdd;

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

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

关于javascript - 相互递归和 JSLint - 函数在定义之前被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45808062/

相关文章:

c - 递归函数的段错误

javascript - JavaScript 中的内存管理技术

javascript - 选中复选框时显示按钮

javascript - 更新 D3 堆积条形图中的数据

javascript - 如何使用 fetch 测试 api 调用

node.js - 失眠与NodeJS : "Error: Peer certificate cannot be authenticated with given CA certificates"

javascript - 如何配置 Express 响应对象自动给 JSON 添加属性?

c++ - 递归生成给定子集大小的所有组合 (C++)

node.js redis同步解决方案

python - 列表python列表的递归最大函数