[英]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.