如何定义一对在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中的一个错误吗?(这个问题肯定已在某个地方得到解答,但我找不到了!)
函数内部的引用在执行之前不会被解析.只要两个函数都在其中一个函数执行时定义,它们就会找到彼此.
如果要删除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)