代码之家  ›  专栏  ›  技术社区  ›  Suo6613 Saxon

特定匿名函数的用途

  •  -1
  • Suo6613 Saxon  · 技术社区  · 10 年前

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

    function anonymous() 
    { 
        return(function()
               {
                   'use strict';
                    return !this&&!!Function.prototype.bind;
               }
        ());
    }
    
    2 回复  |  直到 10 年前
        1
  •  4
  •   sled    10 年前

    这其实不是一个坏问题 'use strict'; 指示应在ECMAScript5的一部分严格模式下计算函数内的代码。

    如果启用了严格模式,则不能使用未声明的变量,这在这里很重要。如果您的浏览器能够使用ECMAScript5 this 变量未声明,即 undefined 。如果您的浏览器不支持ECMAScript5 通常是 Window .

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

    'use strict';
    var hasECMAScript5 = !this;
    

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

        2
  •  2
  •   Quentin    10 年前

    它测试浏览器是否同时支持两者 strict mode bind .

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