javascript - isNaN ('Hello World!' ) 与 isNaN ('' )

标签 javascript

<分区>

我想知道为什么以下程序的行为不同,尽管数据类型是字符串,

console.log(isNaN('Hello World!'))

console.log(isNaN(''))

控制台显示如下结果,

true

false

我预计这两个结果都是真的。

任何人都可以帮助我理解这个基本的东西。

谢谢。

最佳答案

根据documentation :

自 isNaN 函数规范的最早版本以来,它对非数字参数的行为一直令人困惑。当 isNaN 函数的参数不是 Number 类型时,该值首先被强制转换为 Number。然后测试结果值以确定它是否为 NaN。因此,对于非数字,当强制转换为数字类型时会产生有效的非 NaN 数值(特别是空字符串和 bool 基元,当强制转换为数字值零或一时),“false”返回值可能是意外的;例如,空字符串肯定是“不是数字”。混淆源于这样一个事实,即术语“不是数字”对于表示为 IEEE-754 浮点值的数字具有特定含义。该函数应解释为回答以下问题:“当强制转换为数值时,此值是否为 IEEE-754 ‘非数字’值?”

您可能想使用 Number.isNaN 而不是 isNan,它的行为不同(我提供的链接中也提到了这一点)

关于javascript - isNaN ('Hello World!' ) 与 isNaN ('' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63805757/

相关文章:

javascript - jQuery fllotcharts - 仅适用于一个系列的工具提示

javascript - 从 Flux 组件函数中,如何访问输入的值?

javascript - 计算每个输入具有不同价格的输入值。有更短的代码吗?(仅限 javascript)

javascript - 如何知道 window.opener 是否来 self 的网页?

javascript - 修复页面高度以随页脚向上滑动

javascript - 如何增加javascript进度条的进度?

javascript - Sequelize MYSQL 中的类似字符串匹配

javascript - 是否可以使 Chart JS 3.7.0 折线图中的点看起来像 donut ?

javascript - 调试 JavaScript 缩小错误(在 Liferay 6.2 中)

javascript - 为什么测试框架的语法如此奇怪?