在递归调用中避免空引用
Avoid null ref in recursive call
我有递归调用,我希望是安全的(以防我的func为null会导致错误),目前我使用对函数本身内部函数的调用,如果为null,可能会有一些ref问题,有什么方法可以在JS中使此调用安全?
例如
myFunc("hello",1);
function myFunc(){
myFunc();
}
我试着在网上找到一些克服这个问题的方法,但没有找到。。。
您可以确保使用闭包引用myFunc
var myFunc = (function() {
function myFunc() {
myFunc();
}
return myFunc;
})();
// demo
var tmp = myFunc;
myFunc = null;
tmp(); // infinite recursion
如果您不需要支持IE8及以下版本,命名函数表达式会更好,并且可以完成以下工作:
var myFunc = function myFunc() {
myFunc();
};
不幸的是,IE8有一个错误阻止了它的工作(请参阅Juriy"kangax"Zaytsev和博客文章Double-take解密的命名函数表达式)。
在这种情况下,我会像下面的一样使用arguments.callee
function myFunc(){
arguments.callee();
}
这为您提供了函数的引用,您不需要使用函数名称。
如果这能解决你的问题,请告诉我。
更新-正如Pr0gr4mm3r在下面的评论中所说,这在ECMAScript 5严格模式中不可用祝你好运
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 递归深度比较
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- 递归函数中断
- 如何递归地获取嵌套对象中所有子对象的列表
- JavaScript 素数搜索无限递归
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 递归|两个函数名
- 有没有一种方法可以在Javascript中进行可变递归currying
- 如何对不同的表递归使用以下代码
- 将jQuery对象传递到setTimeout递归函数中
- Javascript递归函数引用了这一点
- 在递归调用中避免空引用
- 如何在递归调用中保持对数据结构的引用
- 猫鼬递归查询父引用
- 在重绑定函数引用时避免递归
- 在递归函数中保持对象引用