2016-05-26 7 views
0

Meine Funktion gibt undefined statt 3, ich bin mir bewusst, kann ich verwenden: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/maxWarum gibt meine Funktion undefined zurück, wenn versucht wird, die maximale Zahl von einem Array zurückzugeben?

Ich möchte jedoch zuerst versuchen und sehen, ob ich eine native Funktion so tun können, ohne Verwendung, da ich zu verbessern, bin versucht, meine Fähigkeiten als Entwickler.

var my_max = function(arr){ 
var max=arr[0]; 
for (var i = 0; i < arr.length; i++){ 
    if (arr[i] > max) { 
     max=arr[i]; 
    } 
} 
return max; 
}; 

console.log(my_max(1, 2, 3)); 

Antwort

5

Dort gibt es kein Array. Sie geben nur drei Zahlen an die Funktion weiter. Sie sollten stattdessen eine Reihe von drei Zahlen passieren:

console.log(my_max([1, 2, 3])); 

Alternativ können Sie Rest Parameter in Ihrer Funktion verwenden, wie folgt aus:

var my_max = function(...arr){ 
    // ... 
} 

Dann können Sie es ohne Verwendung eines Arrays aufrufen :

console.log(my_max(1, 2, 3)); 
+0

Wichtig, um darauf hinzuweisen, dass Restargumente eine ES2015-Funktion sind und daher nur einige Browser heute unterstützen. –

+0

@ T.J.Crowder Mit 'einigen Browsern 'meinst du IE, oder? –

+1

@Gothdo: Sogar Firefox und Chrome haben erst seit relativ kurzer Zeit damit begonnen, sie zu unterstützen. Edge unterstützt sie, IE11 nicht, Safari nicht. –