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