javascript - 为什么我在这段 javaScript 代码中得到 NaN?

标签 javascript nan

首先我测试每个变量都有一个数字值:

09-11 18:15:00.420:
       d_drop: -1.178791867393647
  drop_at_zero: 0.0731037475605623
   sightHeight: 4.5
    d_distance: 40
     zeroRange: 10

09-11 18:15:00.420:
       d_drop: true
  drop_at_zero: true
   sightHeight: true
    d_distance: true
     zeroRange: true

function isNumber (o) {
  return ! isNaN (o-0) && o != null;
}

 var d_drop; // in calculation this gets value 1.1789

 var d_path = -d_drop - sightHeight + (drop_at_zero + sightHeight) * d_distance / zeroRange;

console.log("Path: " + d_path + " cm");

在日志中:

09-11 18:15:00.430: D/CordovaLog(1533): Path: NaN cm

为什么?我已经尝试了几个小时,但没有成功,也许有人有想法,但我还没有!

谢谢! 萨米语

--------答案是在使用 + 操作数时解析每个变量------------

var d_path = parseFloat(-d_drop) - parseFloat(sightHeight) + (parseFloat(drop_at_zero) + parseFloat(sightHeight)) * parseFloat(d_distance)/parseFloat(zeroRange);

最佳答案

加法运算符 + 将在任一操作数为字符串时将其转换为字符串。在使用它们之前,您需要将所有输入(d_dropsightHeight 等)解析为数字。

下面是 + 重载如何工作的演示。注意减法运算符 - 没有被重载,并且总是将操作数转换为数字:

var numberA = 1;
var numberB = 2;
var stringA = '3';
var stringB = '4';

numberA + numberB // 3 (number)
numberA - numberB // -1 (number)
stringA + stringB // "34" (string)
stringA - stringB // -1 (number)
numberA + stringB // "14" (string)
numberA - stringB // -3 (number)

http://jsfiddle.net/jbabey/abwhd/

关于javascript - 为什么我在这段 javaScript 代码中得到 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373087/

相关文章:

javascript - display.html typescript 不工作

javascript - AJAX获取当前网站域名

javascript - "ComponentDidMount"如果我从服务器请求数据,钩子(Hook)会触发内存泄漏

python - 在提取子集时如何保留 NAN 值?

python - 通过索引将 numpy 数组中的值设置为 NaN

lua - torch 7 : Filtering out NaN values

php - 使用 php 突出显示非常大的文件之间的差异

javascript - meteor - 我可以删除核心包吗?

c++ - 如何从 C++ vector 中删除 NAN?

python - 使用 np.nan 替换数组的所有元素时出现的问题