JavaScript: как ссылаться на анонимную функцию внутри самой функции? - PullRequest
5 голосов
/ 22 апреля 2011

, если arguments.callee не разрешен в «Использовать строгий», и мы не можем сделать

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

потому что в IE это не будет работать (или это будет работать "странно") http://kangax.github.com/nfe/#jscript-bugs, тогда какие еще опции мы должны ссылаться на анонимную функцию внутри самой функции?

Ответы [ 3 ]

3 голосов
/ 22 апреля 2011
3 голосов
/ 22 апреля 2011

Не используйте выражение с именованной функцией. Просто объявите и инициализируйте его обычным способом.

function f() {
    f();
}

Единственная жизнеспособная альтернатива со строгим ES5 - это использовать код в вашем вопросе и иметь дело с дрянной реализацией IE в IE. Но: действительно ли вы ожидаете, что браузер, который так ужасно неправильно работает с NFE (хм, IE), внедрит "use strict" в ближайшее время?

1 голос
/ 22 апреля 2011

Вот довольно запутанный способ сделать это, но он работает:

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

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

f();
...