如果“使用严格”中不允许 arguments.callee,我们不能这样做
var f = function g() {
//g
}
因为在 IE 中不起作用(或者会“奇怪”地起作用)http://kangax.github.com/nfe/#jscript-bugs,那么我们还有哪些其他选项可以引用函数中的匿名函数本身?
如果“使用严格”中不允许 arguments.callee,我们不能这样做
var f = function g() {
//g
}
因为在 IE 中不起作用(或者会“奇怪”地起作用)http://kangax.github.com/nfe/#jscript-bugs,那么我们还有哪些其他选项可以引用函数中的匿名函数本身?
不要使用命名函数表达式。只需以正常方式声明和初始化它。
function f() {
f();
}
ES5 strict 唯一可行的替代方法是使用您问题中的代码,并处理 IE 糟糕的 NFE 实现。但是:你真的期望一个让 NFE 如此严重错误(咳咳,IE)的浏览器"use strict"
很快就会实现吗?
这是一种相当复杂的方法,但它有效:
var f = function() {
function f() {
if (confirm('Keep going?')) {
this.apply(this);
}
}
f.apply(f);
}
f();