javascript:如何在函数本身中引用匿名函数?

时间:2011-04-22 16:17:07

标签: javascript function anonymous-function scoping

如果在“use strict”中不允许arguments.callee,我们就不能这样做

var f = function g() {
    //g
}

因为在IE中不起作用(或者说“怪异”)http://kangax.github.com/nfe/#jscript-bugs,那么我们还有哪些其他选项可以引用函数本身的匿名函数?

3 个答案:

答案 0 :(得分:3)

不要使用命名函数表达式。只需以正常方式声明并初始化它。

function f() {
    f();
}

ES5严格的唯一可行替代方案是使用您问题中的代码,并处理IE糟糕的NFE实现。但是:你真的期望一个浏览器让NFE如此可怕的错误(ahem,IE)很快就能实现"use strict"吗?

答案 1 :(得分:3)

答案 2 :(得分:1)

这是一种相当复杂的方法,但它有效:

http://jsfiddle.net/4KKFN/4/

var f = function() {
    function f() {
        if (confirm('Keep going?')) {
            this.apply(this);
        }
    }
    f.apply(f);
}

f();