gpt4 book ai didi

javascript - 有人可以向我解释一下这个 javascript 行为吗?为 NaN([])

转载 作者:行者123 更新时间:2023-12-03 03:05:18 26 4
gpt4 key购买 nike

我就是不明白:

isNaN([]) === false -> true

在浏览器或node.js中

我想了解为什么。

最佳答案

这与类型强制有关。当 isNaN 接收到除数字之外的任何内容时,它会将值强制转换为数字......所以它基本上会执行 +value 操作。由于 +[]0 并且 0 是数字,因此 isNaN 返回 false .

如果要检查某个值是否不是数字,则需要使用 parseInt (或 parseFloat)进行转换。对于空数组,这两个函数都会返回 NaN。

不同之处在于,对于转换,您明确告诉它输入是类似数字的,因此应该能够毫无问题地转换为 Number 类型的值。由于 [] 与数字不同,尝试解析(转换)它将导致 NaN。

这是对解析和转换如何工作的极其简化的解释。其一,它们是两个不同的事物。如果您想了解有关这两者如何工作的更多信息,请开始here

然而,通过强制转换(这就是您正在做的事情),您实际上向它传递了一个值,并“假设”(由于缺乏更好的词)值类型与参数的要求兼容。因此 isNaN 接收一个数组并猜测您打算向其传递一个数字,并在执行实际操作之前将其强制转换为其等效数字(在空数组的情况下为 0)。所以 isNaN 是在 0 上执行的,而不是空数组。

同样,这个解释过于简单化了。有关 JS 中类型强制的更多信息,请访问 here

关于javascript - 有人可以向我解释一下这个 javascript 行为吗?为 NaN([]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com