我是Javascript新手,很抱歉,我写了返回数组的最高和最低数之间的差的函数:为我的JS函数获取NaN。谁能解释为什么?
// FUNCTION 1
function range (arr) {
var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);
var max_diff = max - min;
return max_diff;
}
console.log(range([6,2,3,4,9,6,1,0,5])); // 9
不过,在我想出了这个解决方案,我尝试另一种方法:
// FUNCTION 2
function range (arr) {
var max = function (arr) {
return Math.max.apply(null, arr);
}
var min = function (arr) {
return Math.min.apply(null, arr);
}
var max_diff = max - min;
return max_diff;
}
console.log(range([6,2,3,4,9,6,1,0,5])); // NaN
该函数返回 “南” 。我在NaN上读过,但是我仍然不清楚为什么我得到“NaN”。另一个奇怪的是:如果我把FUNCTION 2放在FUNCTION 1之前,第二个函数实际上返回正确的结果(9)。
Whaaaat?
埃姆,你从彼此减去两个功能。不是功能的结果。 Javascript中的函数是一个对象,但它不是一个数字。 –
max和minimum是函数,所以你应该使用max() - min(); – Mahi
在一个简单的例子中,'42'和'function(){return 42; }是两个非常不同的值。你可以在这里阅读关于函数的教程:http://eloquentjavascript.net/03_functions.html。 –