我发现在developer.mozilla.URL网站上显示的许多方法中都没有必要的判断:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

您可以转到“填充”部分。

总是存在像以下代码这样的判断:

Array.prototype.filter = function(fun /*, thisArg */)
{
    "use strict";

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


不仅过滤方法,而且Array.prototype.every(),Array.prototype.map()。
如:

Array.prototype.map = function (fun /*, thisp */) {
   if (this === void 0 || this === null) { throw TypeError();
   ...
}


我不知道在哪种情况下条件的结果将返回true,然后抛出“ TypeError”。
我认为,这种判断不是必需的,应删除。
你怎么看?
这个判断是为了什么?

最佳答案

我不知道在哪种情况下条件的结果会返回
  true,然后抛出“ TypeError”。


回答:

Array.prototype.filter = function(fun /*, thisArg */){
  console.log('okay',this==null);
}
Array.prototype.filter.call(null);
Array.prototype.filter.call(undefined);

关于javascript - 这个判断在Array.prototype.filter中是否重要,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25604034/

10-09 15:54