javascript函数之间的循环引用
circular references among javascript functions
如何在Javascript中定义一对相互调用的函数,以便JS lint在定义"factorial"之前不会抱怨它被使用了?
function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
似乎没有有效的订单可以满足JSlint的要求。(一个可以嵌入另一个,但对于一组相互调用的函数来说,这将是一场噩梦)。
这肯定是由语言处理的吧?这只是JSlint中的一个错误吗?(这个问题肯定在某个地方得到了答案,但我找不到!)
函数内部的引用在执行之前不会被解析。只要在其中一个函数执行时已经定义了这两个函数,它们就会找到彼此。
如果你想摆脱JSLint警告,你可以定义函数的名称,就在之前
var factorial;
function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
比起函数,我更喜欢这种语法:
var factorial1 = function(n) { return factorial(n); }
var factorial = function(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
不会忘记使用此语法"声明"函数。
解决此问题的另一种方法是将其作为回调函数传递,如下所示:
const factorial1 = (n, callback) => { return callback(n); }
const factorial = (n) => { return n === 0 ? 1 : n * factorial1(n - 1, factorial ); }
相关文章:
- 如何处理javascript中的循环引用,类似于Excel提供迭代限制的方式
- 装饰$errorProvider时的循环引用
- 使用javascript点击事件的循环引用
- 使用 jQuery 将 HTML 文本抓取到 JSON 中,但由于循环引用而无法字符串化
- 为什么$().map生成循环引用
- 这是否在javascript中创建循环引用
- JS - 数字循环引用
- 如何在 JavaScript 和浏览器中处理循环引用
- 可观察量相互依赖以获取自己的值 - 循环引用
- 循环引用似乎在事件处理程序函数中不起作用
- JavaScript <-> DOM 循环引用问题的精确解释
- jQuery data()如何破坏循环引用
- 多次循环引用对象,将其属性复制到Javascript/Angularjs中的其他对象
- 此模式是否会导致闭包中出现循环引用
- 我应该如何在JavaScript中设置循环引用
- javascript函数之间的循环引用
- 循环引用木偶.js
- jQuery.从循环引用扩展safe
- 循环引用阻塞了jsonwebtoken.JSON.stringify的签名原因
- 字符串化一个循环引用对象的浅拷贝