特定匿名函数的目的

时间:2015-01-24 22:32:28

标签: javascript browser anonymous-function

我很难理解以下功能将会做什么。我需要了解这个函数的用途是什么,因为我在运行这个函数时使用不同的浏览器得到了不同的反应。

function anonymous() 
{ 
    return(function()
           {
               'use strict';
                return !this&&!!Function.prototype.bind;
           }
    ());
}

2 个答案:

答案 0 :(得分:4)

实际上这不是一个糟糕的问题,'use strict';表示函数内部的代码应该在严格模式下进行评估,这是ECMAScript5的一部分。

启用严格模式后,您无法使用未声明的变量 - 这在此非常重要。如果您的浏览器能够使用ECMAScript5,则this变量未声明,即undefined。如果您的浏览器不支持ECMAScript5,this通常是Window

因此,这是兼容性检查您的浏览器是否支持ECMAScript5:

'use strict';
var hasECMAScript5 = !this;

然后,表达式!!Function.prototype.bind检查您的浏览器是否支持绑定函数(请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)。

答案 1 :(得分:2)

它测试浏览器是否同时支持strict modebind

它使用IIFE,因为this的值取决于函数的调用方式。通过使用新函数,您可以保证调用它的上下文。