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是以前定义的。对不起,我忘了添加那个部分。