我很难理解以下功能将会做什么。我需要了解这个函数的用途是什么,因为我在运行这个函数时使用不同的浏览器得到了不同的反应。
function anonymous()
{
return(function()
{
'use strict';
return !this&&!!Function.prototype.bind;
}
());
}
答案 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 mode和bind。
它使用IIFE,因为this
的值取决于函数的调用方式。通过使用新函数,您可以保证调用它的上下文。