首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

lodash源码分析之NaN不是NaN

== other) 在 js 中,只有 NaN 和自身是不相等的,当两个需要比较的值都是和自身不相等时,表明这两个值都为 NaN,返回 true。...还有个 isNaN 的全局方法,可以用来判断一个值是否为 NaN。例如 isNaN(NaN) 会返回 true ,那 eq 是否可以改成以下形式呢?...isNaN 有一个很怪异的行为,如果传入的参数不为 Number 类型,会尝试转换成 Number 类型之后再做是否为 NaN判断。...所以类似 isNaN('notNaN') 返回的也是 true ,因为字符串 notNaN 会先被转换成 NaN 再做判断,这不是我们想要的结果。...可以用Number.isNaN()吗 为了修复 isNaN 的缺陷,es6 在 Number 对象上扩展了 isNaN 方法,只有是 NaN 时才会返回 true,因此用 Number.isNaN 来判断是安全的

1.8K60

lodash源码分析之NaN不是NaN

== other) 在 js 中,只有 NaN 和自身是不相等的,当两个需要比较的值都是和自身不相等时,表明这两个值都为 NaN,返回 true。...还有个 isNaN 的全局方法,可以用来判断一个值是否为 NaN。例如 isNaN(NaN) 会返回 true ,那 eq 是否可以改成以下形式呢?...isNaN 有一个很怪异的行为,如果传入的参数不为 Number 类型,会尝试转换成 Number 类型之后再做是否为 NaN判断。...所以类似 isNaN('notNaN') 返回的也是 true ,因为字符串 notNaN 会先被转换成 NaN 再做判断,这不是我们想要的结果。...可以用Number.isNaN()吗 为了修复 isNaN 的缺陷,es6 在 Number 对象上扩展了 isNaN 方法,只有是 NaN 时才会返回 true,因此用 Number.isNaN 来判断是安全的

1.7K50
您找到你想要的搜索结果了吗?
是的
没有找到

Under the Hood: NaN of JS

同时需要注意的是,NaN 只会出现在浮点类型中,而不会出现在 int 类型里(当然 JS 并没有这个概念) 什么意思?用你熟悉的任何支持 int 和 double 两种类型的语言(比如 C)。...比如我们在 JS 中可以使用类似于 NaN+1,NaN+'123' 的操作,还不会报错。 而 Signaling NaN 就是一个“爆脾气”。...但我们从来没有见过这样的帖子,所以计算机内部肯定不是用这种颇为靠运气的方式在处理这个问题。 考虑换一种方式,假设计算机内部是通过位运算来判断的。...= __x; } 仅仅只是简单的判断自己是否等于自己 ?。在 C 中具体如何实现 x!...而具体判断的逻辑如下图所示:我们先检查,操作数是否有 NaN,如果有?那就返回 false 吧 ? 所以 Number.isNaN 的 polyfill 可以怎么实现呢?

1.4K20

JS高程】第3章 3.4.5(3)NaN(节选)

在ECMAScript中,任何数值除以非数值都会返回NaN。...NaN有二个特点: 1、任何涉及到NaN的操作,都会返回NaN; 2、NaN与任何值都不相等,包括它自己; 根据这二个特点,ECMAScript定义了 isNaN()函数。...这个函数会确定这个参数是不是不是数值”。 大概思路与用法是这样: 1、如果参数可以转为数值,就返回false。意思是说这个参数,“是数值”。 2、如果参数不能转为数值,就返回true。...意思是说,这个参数“不是数值”。 挺绕的哈,反着的。但从这个函数的名称来理解却也正常,isNaN嘛, “是数值”,返回的false; “不是数值”,却返回true; <!...很奇怪哈,isNaN认为空数组是数值; 但有数字值的数组,isNaN却认为它不是数值。 为什么呢?原因也很简单。。。

1.4K70
领券