Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Array.every返回false,而不是类型错误_Javascript_Arrays_Ecmascript 5 - Fatal编程技术网

Javascript Array.every返回false,而不是类型错误

Javascript Array.every返回false,而不是类型错误,javascript,arrays,ecmascript-5,Javascript,Arrays,Ecmascript 5,在练习各种JavaScript代码katas时,我遇到了以下问题: 使用以下签名编写函数IsInArray function isIntArray(arr) { return true; } 如果数组中的每个元素都是整数,则返回true 如果数组为空,则返回true 对于其他输入,返回false 对此,我提出了自己的解决方案,但其中一个公认的解决方案是: function isIntArray(arr) { return Array.isArray(arr) &&

在练习各种JavaScript代码katas时,我遇到了以下问题:

使用以下签名编写函数IsInArray

function isIntArray(arr) {
    return true;
}
  • 如果数组中的每个元素都是整数,则返回true
  • 如果数组为空,则返回true
  • 对于其他输入,返回false
对此,我提出了自己的解决方案,但其中一个公认的解决方案是:

function isIntArray(arr) {
  return Array.isArray(arr) && arr.every(function (x) { return Math.floor(x)=== x });
}
现在我了解了Math.floor部分在确定x是否为十进制时是如何工作的,但我不明白的是,当它遇到以下情况时,它是如何不崩溃的:

var arr = [1,2,"asd",NaN,5];
我试着阅读了一些关于Math.floor和Array.prototype.every的指南,但找不到任何解释。当然,如果x是一个字符串,那么Math.floor(x)==x应该返回一个TypeError

当然,如果
x
是一个字符串,那么
Math.floor(x)==x
应该返回一个
TypeError

没有。如果其中一个操作数不能转换为数字然后再进行运算,大多数数学函数和运算都会返回
NaN

因此,它变成了数学。地板(“asd”)=“asd”本质上是

NaN === "asd" // which is obviously false

你是不是刚刚尝试了
Math.floor(“asd”)
,看到返回值是
NaN
,而
NaN==“asd”
仍然是假的。JavaScript
===
操作符永远不会给你任何类型的“类型错误”。我尝试了Math.floor(“asd”)并没有定义它在控制台中不是一个函数,太好了,但这不是
==
操作符抛出错误的示例。(另外,
Math.floor(“asd”)
在我的浏览器中运行得很好。)这个错误是由于您将“floor”拼写为“floor”造成的。啊,好吧,我现在明白了,这是不是人们在讨论JavaScript时经常提到的怪癖之一?@jbailie1991它肯定不是
NaN
是“不是数字”的首字母缩略词,所以它很有意义。javascript还有很多其他的怪癖,但实际上这只是它的设计方式。对了,我现在理解了这个过程。还清除了它如何计算数组中的NaN,Thanks@jbailie1991太棒了!也很高兴能帮助您:)