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

发布于 2024-11-03 01:43:26 字数 287 浏览 3 评论 0原文

如果“use strict”中不允许使用arguments.callee,并且我们不能这样做,

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

因为在IE中这不起作用(或者“奇怪”地工作)http://kangax.github.com/nfe/#jscript-bugs,那么我们还有什么其他选项来引用匿名函数?函数本身?

if arguments.callee is not allowed in "use strict", and we can't do

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

because in IE that wouldn't work (or that would work "weirdly") http://kangax.github.com/nfe/#jscript-bugs, then what other options do we have to refer to the anonymous function within the function itself?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

合约呢 2024-11-10 01:43:26

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

function f() {
    f();
}

ES5 strict 的唯一可行替代方案是使用问题中的代码,并处理 IE 蹩脚的 NFE 实现。但是:你真的希望一个 NFE 错误如此严重的浏览器(咳咳,IE)很快就能实现 “use strict” 吗?

Don't use a named function expression. Just declare and initialize it the normal way.

function f() {
    f();
}

The only viable alternative with ES5 strict is to use the code in your question, and deal with IE's crappy NFE implementation. But: do you really expect a browser that gets NFEs so horribly wrong (ahem, IE) to implement "use strict" anytime soon?

玩套路吗 2024-11-10 01:43:26

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

http://jsfiddle.net/4KKFN/4/< /a>

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

f();

Here's a rather convoluted way to do it, but it works:

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

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

f();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文