[英]Mutual recursion and JSLint - function was used before it was defined
如果我编写以下代码,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);
};
将这些函数转换为对象的方法可以从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);
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.