命名匿名函数是否安全?

Lar*_*ndt 2 javascript anonymous-function

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

getSomeData.then(
        // success
    function(data) {
        ...
    },
        // failure
    function(error) {
        ...
    }
);
Run Code Online (Sandbox Code Playgroud)

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

getSomeData.then(
    function success(data) {
        ...
    },
    function failure(error) {
        ...
    }
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,命名匿名函数是有道理的,但它是否安全?我在这里看过较旧的帖子,引用这篇文章作为关于IE的警告,但有人知道这是否仍然是IE9的问题?

Rob*_*b W 5

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

命名表达式的另一个优点是用于调试.而不是(anonymous),你会看到一个有意义的名字.

1
对于那些不知道的人:在Internet Explorer(包括版本8)中,命名变量将在以下代码中泄漏:

var expressionName = function shouldNotLeak() {};
shouldNotLeak(); // Error in all browsers except for Internet Explorer <= 8
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是@jacmkno是Windows XP,因为你无法获得IE8以上.当然你可以使用其他浏览器.有太多的企业仍在使用XP,包括我在哪里. (3认同)