Javascript 如何显式引用全局函数?

Javascript 如何显式引用全局函数?,javascript,Javascript,如果使用全局函数的名称会引用局部变量,那么如何引用全局函数 以这个简单的递归示例为例: function foobar(foobar) { return foobar(foobar+1); //<- error in this line } 没有成功。正如@Juhana所说的那样,这将起作用,您将得到一个异常:InternalError:太多递归 function foobar(foobar) { return window.foobar(foobar+1); } foo

如果使用全局函数的名称会引用局部变量,那么如何引用全局函数

以这个简单的递归示例为例:

function foobar(foobar) {
    return foobar(foobar+1); //<- error in this line
}

没有成功。

正如@Juhana所说的那样,这将起作用,您将得到一个
异常:InternalError:太多递归

function foobar(foobar) {
    return window.foobar(foobar+1);
}
foobar(3);

可以使用命名函数表达式。在函数内部使用函数名(
recursive
)。从外部将函数分配给名为
foobar
的变量:

var foobar = function recursive(foobar) {
    return recursive(foobar + 1);
}

foobar(5);

窗口
不是以大写字母开头。只需重命名它即可。。。除非你有一个真正的用例。我想你可以使用<代码>参数。CalLee < /C> >(不在严格模式下工作)。我认为最好的做法是提供重现错误所需的最小代码。那么,为什么投票结果如此接近呢?“这个问题是由一个无法再复制的问题或一个简单的印刷错误引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能帮助未来的读者。”这是目前正在开发的基于Javascript的前端测试框架中的一个现实问题。“函数断言(断言){”发生,因为assert是包含assert的对象的名称和评估assert的函数的名称。再一次:问题标题清楚地说明了问题,因此30秒后Juhanas注释保留了解决方案。如果这是在感谢中,这将不起作用。这只是复制er所需的最低代码ror消息。小写窗口确实解决了问题。
var foobar = function recursive(foobar) {
    return recursive(foobar + 1);
}

foobar(5);