2

随着 Promises 的上升趋势,我们经常看到:

getSomeData.then(
        // success
    function(data) {
        ...
    },
        // failure
    function(error) {
        ...
    }
);

这些评论可能对新手有所帮助,但我更愿意命名匿名函数,如下所示:

getSomeData.then(
    function success(data) {
        ...
    },
    function failure(error) {
        ...
    }
);

在这种情况下,命名一个匿名函数是有意义的,但它安全吗?我在这里看到较早的帖子引用这篇文章作为关于 IE 的警告,但是有谁知道这是否仍然是 IE9 的问题?

4

1 回答 1

5

是的,使用命名函数表达式是安全的1 。您提到的错误在 IE9 中不再存在(尽管在 IE8 中存在)。

命名表达式的另一个优点是用于调试。(anonymous)您将看到一个有意义的名称,而不是。

1
对于不知道的人:在 Internet Explorer 8 及以下版本中,命名变量会在以下代码中泄漏:

var expressionName = function shouldNotLeak() {};
shouldNotLeak(); // Error in all browsers except for Internet Explorer <= 8
于 2013-06-27T21:30:03.027 回答