特定匿名函数的目的

The purpose of particular anonymous function

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

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

这实际上不是一个糟糕的问题,'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)。

它测试浏览器是否同时支持 strict mode and bind

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