javascript函数之间的循环引用

Dan*_*ger 8 javascript

如何定义一对在Javascript中相互调用的函数,以便JS-lint不会抱怨在定义之前使用'factorial'?

function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
Run Code Online (Sandbox Code Playgroud)

似乎没有满足JSlint的有效排序.(一个可以嵌入另一个,但这对于所有相互调用的函数集合来说都是一场噩梦).

当然这是由语言处理的吗?这只是JSlint中的一个错误吗?(这个问题肯定已在某个地方得到解答,但我找不到了!)

Mar*_*rot 7

函数内部的引用在执行之前不会被解析.只要两个函数都在其中一个函数执行时定义,它们就会找到彼此.

如果要删除JSLint警告,可以在以下情况之前定义函数的名称:

var factorial;
function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
Run Code Online (Sandbox Code Playgroud)