在第 5 版时,every 被添加进 ECMA-262 标准;因此在某些实现环境中不被支持。你可以把下面的代码放到脚本的开头来解决此问题,该代码允许在那些没有原生支持 every 的实现环境中使用它。该算法是 ECMA-262 第5版中指定的算法,假定   和 TypeError 拥有它们的初始值,且 fun.call 等价于Function.prototype.call

if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisArg */)
  {
    \'use strict\';

    if (this === void 0 || this === null)
      throw new TypeError();

    var t =  (this);
    var len = t.length >>> 0;
    if (typeof fun !== \'function\')
        throw new TypeError();

    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
    for (var i = 0; i < len; i++)
    {
      if (i in t && !fun.call(thisArg, t[i], i, t))
        return false;
    }

    return true;
  };
}

 

收藏 打印