Javascript 函数返回NaN

Javascript 函数返回NaN,javascript,Javascript,我正试图找出两点之间的距离 这是我的距离函数 var distance = function(first, second) { var midValue = first - second; midValue *= midValue; return Math.sqrt(midValue); } xDist += distance(locations[i].x, students[j][0]); 这就是我调用距离函数的地方 var dist

我正试图找出两点之间的距离

这是我的距离函数

var distance = function(first, second) {
        var midValue = first - second;
        midValue *= midValue;
        return Math.sqrt(midValue);
    }
xDist += distance(locations[i].x, students[j][0]);
这就是我调用距离函数的地方

var distance = function(first, second) {
        var midValue = first - second;
        midValue *= midValue;
        return Math.sqrt(midValue);
    }
xDist += distance(locations[i].x, students[j][0]);

当我查看xDist的值时,我得到NaN。我暗中观察了地点和学生的价值观,它们都是数字。另外,在距离函数中,我在返回前查看了Math.sqrt(midValue)的值,它是一个数字

我的猜测是
位置[i].x
学生[j][0]
是/是
未定义的
,因为
上的算术运算未定义
,或者,它们可能一开始就不是数字,因此总是输出
NaN
,虽然看起来是数字,但可能并不总是数字。所以最好做一个parseInt

var distance = function(first, second) {
        var midValue = parseInt(first) - parseInt(second);
        midValue *= midValue;
        return Math.sqrt(midValue);
    }

您需要指定一个初始值xDist=0,否则它将是未定义的。 未定义+10=NaN

你可以试试这个

var distance = function(first, second) {
        var midValue = first - second;
        midValue *= midValue;
        return Math.sqrt(midValue);
    }

var xDist=0;
xDist += distance(locations[i].x, students[j][0]);
alert(xDist);

在尝试向其添加距离之前,是否将
xDist
初始化为
0
?不,除非有充分的理由,否则不要使用
parseInt()
。等等,您正在对中值进行平方运算,然后对其进行平方根运算?为什么?请在浏览器控制台中尝试以下操作:
“12”-“4”
@Barte使用Math.abs删除负数,而不是删除负数。没有证据表明问题涉及非数值。即使是这样,
-
*=
运算符仍将执行转换。我们也不知道OP是否真的想使用integers.xDist是以前定义的。对不起,我忘了添加那个部分。