<分区>
我想知道为什么以下程序的行为不同,尽管数据类型是字符串,
console.log(isNaN('Hello World!'))
console.log(isNaN(''))
控制台显示如下结果,
true
false
我预计这两个结果都是真的。
任何人都可以帮助我理解这个基本的东西。
谢谢。
标签 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 - Sequelize MYSQL 中的类似字符串匹配
javascript - 是否可以使 Chart JS 3.7.0 折线图中的点看起来像 donut ?