我是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。 –