【发布时间】:2015-10-05 13:43:49
【问题描述】:
正如许多人所建议的,命名函数表达式的用途之一是递归调用自身。但是,在 Chrome 控制台中,没有名称的函数表达式似乎仍然可以这样做。
编辑:
我知道这将是 stackoverflow,但是,我希望输出类似于 a() is not a function 而不是 Uncaught RangeError: Maximum call stack size exceeded(...)。
var a = function () {
a();
}
a();
以下带有名称的函数表达式应该给我一个 Uncaught RangeError: Maximum call stack size exceeded(...)。
var a = function a () {
a();
}
a();
编辑 2: 在此链接https://developer.mozilla.org/en/docs/web/JavaScript/Reference/Operators/function 中,它表示“如果要在函数体内引用当前函数,则需要创建一个命名函数表达式。”。但是,在我看来,这种说法并不正确,因为您仍然可以在函数体内引用当前函数而无需为其分配函数标识符
任何想法将不胜感激
【问题讨论】:
-
你的问题是......?
-
感谢您的评论,也许我没有把我的问题说清楚。我的问题是,既然
function expression without name可以递归调用自己,为什么我们需要named function expresion -
考虑表达式是否没有赋值给变量;
someCallback(function a() { a(); })与someCallback(function () { ??? }) -
所以,当你打电话给
a()-a已经起作用了:-) 所以一切都正确
标签: javascript