8

JS-lint が「factorial」が定義される前に使用されていると文句を言わないように、Javascript で互いに呼び出す関数のペアを定義するにはどうすればよいですか?

function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }

JSlint を満たす有効な順序はないようです。(一方を他方に埋め込むことはできますが、これはすべてが相互に呼び出す関数のコレクションにとっては悪夢です)。

確かにこれは言語で処理されますよね?これは JSlint の単なるバグですか? (この質問はどこかで答えられているはずですが、見つかりません!)

4

3 に答える 3

7

関数内の参照は、実行されるまで解決されません。いずれかの関数が実行されるまでに両方の関数が定義されている限り、それらはお互いを見つけます。

JSLint 警告を取り除きたい場合は、直前に関数の名前を定義できます。

var factorial;
function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
于 2013-06-24T06:40:21.177 に答える