簡體   English   中英

為什么 JavaScript 中是“NaN”,我該如何解決?

[英]Why is'NaN' in JavaScript and how do I fix it?

我創建了一個程序,它告訴您一個程序,該程序在 JavaScript 中接受一個數字並告訴您該數字的各種屬性。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
    </head>
    <body>
        <script>
            
            var div_sum = 0
            var num = Number(prompt('Please enter the number'))
            var pn_result = true
            for(var i = 2; i < num; i++){
                if(num % i === 0){
                    var pn_result = false
                    break
                }
            }
            if(pn_result){
                alert(String(num) + 'is a prime')
            } else {
                alert(String(num) + 'is not a prime\n' + String(num) + '=' + String(i) + 'x' + String(num / i))
            }
            var div_list = []
            for(var div = 1; div < num + 1; div++){
                if(num % div === 0){
                    div_list.push(div)
                }
            }
            var div_len = div_list.length
            alert('Number of divisor is' + String(div_len) )
            
            for(var i = 0; i < div_len + 1; i++){
                var div_sum = div_sum + div_list[i]
            }
            var div_sum = div_sum - num
            alert(div_sum)
        </script>
    </body>
</html>

最后,我很好奇這個數字是否是一個完美的數字,所以我輸出了不包括我自己的除數之和。

但是執行結果顯示為'NaN'。

奇怪的是,其他操作是在完成狀態下完成的。 什么是“NaN”,我該如何解決?

主要問題是這條線。 您比div_list的長度多迭代 1 次。

for(var i = 0; i < div_len + 1; i++){
  var div_sum = div_sum + div_list[i]
}

它應該是

for(var i = 0; i < div_len; i++){
  var div_sum = div_sum + div_list[i]
}

其他問題包括在for loop內部重新聲明div_sum ,並立即在外部聲明。 您應該只聲​​明一次,然后重新為其分配新值。

var div_sum = 0;
for(var i = 0; i < div_len + 1; i++){
  div_sum = div_sum + div_list[i]
}
div_sum = div_sum - num;

最后,您還應該使用camelCase命名法來命名JavaScript變量。 這是正常的約定。 相反,您使用的是snake_case約定,它通常不用於JavaScript

改變這個

for(var i = 0; i < div_len + 1; i++)
  {
    var div_sum = div_sum + div_list[i]
  }

對此,它會起作用

for(var i = 0; i < div_len; i++)
   {
     var div_sum = div_sum + div_list[i]
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM