2016-05-26 11 views
0

Ich versuche, eine Funktion zu erstellen, die alle Argumente zusammenfügt. Ich bekomme immer NaN. Was mache ich falsch?Warum bekomme ich NaN, wenn ich alle Argumente hinzufüge?

function sum() { 
     var n = arguments.length; 
     var total = 0; 
    for(var i = 0; i < n; i++) { 
     // code here 
     total += n[i]; 
    } 
    return total; 
} 

sum(1,2,3,4); 
+0

'console.log (n) dient; console.log (n [i]); ' – epascarello

Antwort

2

Sie benötigen Wert erhalten von arguments, wo n ist nur eine Zahl, die die Länge von arguments und n[i] wird undefined hält. Addition mit undefined Ergebnisse NaN.

function sum() { 
 
    var n = arguments.length; 
 
    var total = 0; 
 
    for (var i = 0; i < n; i++) { 
 
    // code here 
 
    total += arguments[i]; 
 
    } 
 
    return total; 
 
} 
 

 
console.log(sum(1, 2, 3, 4));

1

Was n[i]; ist? Als n sollte nur die Länge der Argumente array enthalten sein, es ist nicht selbst ein array.

Sie müssen total += n[i]; mit total += arguments[i];

0

Einer der klassischen Nachteil javaScript ersetzen ist etwa NaN (Not a Number) 's zugrunde liegende Prinzip ist.

NaN (Not gleich alles) -> Wenn es auftritt i) Ergebnis undefiniert oder fehlerhafte Operationen

ii) Toxic: alle arithmetischen Operationen mit Nan als Eingabe NaN als Ergebnis haben wird.

So in Ihrem Code: Nicht spezifiziert (n [i]) + Anzahl = NaN

<script> 

     function sum() { 
      var n = arguments.length; 
      var total = 0; 
      for (var i = 0; i < n; i++) { 
       // code here 
       total += arguments[i]; 
      } 
      return total;//returns 10 
     } 
     sum(1, 2, 3, 4); 

this helps/den Zweck

Verwandte Themen