2016-05-26 4 views
0

Я пытаюсь создать функцию, которая объединяет все аргументы. Я продолжаю получать NaN. Что я делаю не так?Почему я получаю NaN при добавлении всех аргументов?

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 (п); console.log (п [I]); ' – epascarello

ответ

2

Вам нужно получить значение из arguments, где n это просто число имеет длину arguments и n[i] будет undefined. Добавление с undefined Результаты 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

Что такое n[i];? Поскольку n должен содержать только длину аргументов array, его не является array.

Вам нужно заменить total += n[i]; с total += arguments[i];

0

Одним из классического недостатка JavaScript составляет около NaN (не число) 's основного принципа является.

NaN (не равно ни к чему) -> Когда это происходит I) Результат неопределенных или ошибочных операций

II) Токсичные: любые арифметические операции с Nan в качестве входных данных будут иметь NaN в качестве результата.

Так что в вашем коде: не определено (п [я]) + число = 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); 

Надеется, что это помогает/служат целями

Смежные вопросы