代码之家  ›  专栏  ›  技术社区  ›  johnnyodonnell

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

  •  6
  • johnnyodonnell  · 技术社区  · 7 年前

    如果我编写以下代码,JSLint会抱怨 . 有没有一种方法可以编写相互递归的代码,并且仍然能够满足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);
    };
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   Nano Miratus    7 年前

    对于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

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

        2
  •  1
  •   johnnyodonnell    7 年前

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