只是出于好奇.
typeof NaN数字似乎不合逻辑.顺便说一句,就像NaN === NaN或NaN == NaN返回虚假一样.这是javascript的特点之一,还是有理由这样做?
编辑:谢谢你的回答.尽管让人们感到高兴并不容易.阅读答案和维基我理解得更多,但仍然是一句话
与NaN进行比较时,即使与自身进行比较,也会返回无序结果.比较谓词是信令或非信令,信令版本表示这种比较的无效例外.等式和不等式谓词是非信令的,因此x = x返回false可用于测试x是否是安静的NaN.
只是让我头晕目眩.如果有人能用人类(而不是数学家)的可读语言翻译,我会感激不尽.
根据我的经验,我知道NaN进行除法运算或尝试使数字不包含字符串时都可以得到。如果可以的话,还有其他情况吗NaN?特别是-是否可以通过乘法得到它?
这是我在PhoneGap应用程序中使用的一段代码:
var g = 9.80665;
acceleration.x = (acceleration.x * g).toFixed(2);
acceleration.y = (acceleration.y * g).toFixed(2);
acceleration.z = ((acceleration.z + 1) * g).toFixed(2);
Run Code Online (Sandbox Code Playgroud)
An acceleration是一个基本的PhoneGap对象,我几乎无法相信,它包含一个字符串或任何其他值(除float以外)都可能导致NaN。
但是,在某些情况下(在某些特定设备上),我NaN超出了上面的范围。
使用以下代码“保护”上述值对我来说不是问题:
acceleration.x = (parseFloat(acceleration.x) || 0) + ' m/s\u00b2';
acceleration.y = (parseFloat(acceleration.y) || 0) + ' m/s\u00b2';
acceleration.z = (parseFloat(acceleration.z) || 0) + ' m/s\u00b2';
Run Code Online (Sandbox Code Playgroud)
但是,我真的很好奇,什么时候以及为什么NaN仅仅做一些值的乘积就可以得到a ?