javascript - 在Javascript中,乘法后,数字何时以及为什么计算为NaN?

标签 javascript cordova numbers 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);

一个 accelerationbase PhoneGap object我简直不敢相信,它包含一个字符串或任何其他值,除了浮点数,可能会导致 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';

但是,我真的很好奇,什么时候以及为什么我可以得到 NaN在做了一些值的乘法之后?

顺便说一句:我读过 this在 MDN,与 many 一样好related answers here在 Stack Overflow,但没有给我任何帮助或回答我的问题。

最佳答案

将数字与无法转换为数字的内容相乘时,您将得到 NaN。

1 * '100'         // 100 because '100' will be converted to 100
1 * ''            // 0 because '' will be converted to 0
1 * 'ten'         // NaN because 'ten' can't be converted to a number
1 * []            // 0 because [] converted to number will be 0
1 * [123]         // 123 because [] will be 123
1 * ['ten']       // NaN
1 * {}            // NaN
1 * true          // 1 because true will be 1
1 * false         // 0
1 * null          // 0
1 * undefined     // NaN, undefined can't be converted to number
1 * function(){}  // NaN

函数“isNaN”检查表达式是否可以转换为数字。您可以检查乘法的两个数字以确认两者都是数字以避免错误。

为了完整起见,要知道变量是否完全是 NaN,您必须将其与自身进行比较:
var a = NaN;
if (a != a) console.log('a is NaN');

这是因为 NaN 被定义为不等于一切,包括它自己。

关于javascript - 在Javascript中,乘法后,数字何时以及为什么计算为NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718394/

相关文章:

javascript - react : Cannot read property 'getWeather' of undefined

javascript - jQuery 水平滚动的问题

javascript - 在C#中序列化为JSON并在TS中反序列化

javascript - 是否可以使已初始化的对象文字成为已定义类的实例?

python - 不会添加计数mastermind游戏python

ios - iOS 上的 Cordova 应用程序中的 Iframe Youtube 视频不再工作

ios - Monaca (Cordova) BarcodeScanner 不会取消

ios - Cordova - 在外部应用程序中打开但是如何打开?

javascript - 将数字 0-9 转换为图像?

javascript - 这在 JavaScript : array[n] = true; 中有什么作用