【发布时间】:2014-10-03 12:16:48
【问题描述】:
假设我想转换一个显然不是数字的字符串,但最终我得到一个数字!?
var b = parseFloat("a");
console.log(b); // output NaN
console.log(typeof b); // print number!
这里到底发生了什么? NaN 表示不是数字,对吧?
好的,所以 NaN == NaN 总是错误的。但是:
typeof 1/0 // prints NaN
1/0 == 1/0 // its true
【问题讨论】:
-
typeof null === 'object'的情况与typeof NaN === 'number'相同。 -
关于您的编辑,
typeof 1/0被评估为(typeof 1)/0,即"number"/0。 JS 会尝试将字符串转换为数字,这会导致NaN,所以你正在做NaN/0,这当然会导致NaN。即使不知道运算符的存在,很明显typeof 1是首先执行的,因为 a)typeof总是返回一个字符串,NaN不是字符串,b)NaN是一个值,而不是一个类型, c)typeof从不返回NaN。1/0返回无穷大。
标签: javascript