随着Promises趋势上升,我们经常会看到:
getSomeData.then(
// success
function(data) {
...
},
// failure
function(error) {
...
}
);
这些评论可能对新手有所帮助,但我更倾向于命名匿名函数,如下所示:
getSomeData.then(
function success(data) {
...
},
function failure(error) {
...
}
);
在这种情况下,命名匿名函数是有道理的,但它是否安全?我在这里看过较早的帖子,引用this article作为关于IE的警告,但有人知道这是否仍然是IE9的问题?
答案 0 :(得分:5)
是的,使用命名函数表达式是安全的 1 。您提到的错误在IE9中不再存在(尽管在IE8中也存在)。
命名表达式的另一个优点是用于调试。而不是(anonymous)
,您将看到一个有意义的名称。
1
对于那些不知道的人:在Internet Explorer(包括版本8)中,命名变量将在以下代码中泄漏:
var expressionName = function shouldNotLeak() {};
shouldNotLeak(); // Error in all browsers except for Internet Explorer <= 8