簡體   English   中英

我正在嘗試在JavaScript中添加三個數字的和,但這給了我NaN。 為什么?

[英]I am trying to add the sum of three numbers in JavaScript but it's giving me NaN. Why?

我想從用戶那里收集三個數字,並使用函數和循環將它們相加。 我不斷提出NaN。 為什么是這樣? 我嘗試將字符串提示轉換為Number對象以解決此問題。

 var userEntry1 = Number(window.prompt("Enter in a number of your choice")); var userEntry2 = Number(window.prompt("Enter in a number of your choice")); var userEntry3 = Number(window.prompt("Enter in a number of your choice")); var sum; var i; function addNumb(userEntry1, userEntry2, userEntry3) { "use strict"; sum = userEntry1 + userEntry2 + userEntry3; for (i = 1; i <= arguments.length; i += 1) { sum += Number(arguments[i]); } return sum; } addNumb(userEntry1, userEntry2, userEntry3); window.console.log(sum); 

在循環中,循環的長度等於arguments的長度,但是由於它是一個基於0的數組,因此您將進行一次迭代。 <=更改為<

 var userEntry1 = Number(window.prompt("Enter in a number of your choice")); var userEntry2 = Number(window.prompt("Enter in a number of your choice")); var userEntry3 = Number(window.prompt("Enter in a number of your choice")); var sum; var i; function addNumb(userEntry1, userEntry2, userEntry3) { "use strict"; sum = userEntry1 + userEntry2 + userEntry3; for (i = 0; i < arguments.length; i += 1) { sum += Number(arguments[i]); } return sum; } addNumb(userEntry1, userEntry2, userEntry3); window.console.log(sum); 

arguments對象的鍵從0 ,因此您應從0到該對象循環到keys.length - 1

對象arguments實際上是一個key-value的對象,所以你可以使用運營商in

 var userEntry1 = Number(window.prompt("Enter in a number of your choice")), userEntry2 = Number(window.prompt("Enter in a number of your choice")), userEntry3 = Number(window.prompt("Enter in a number of your choice")), sum, i; function addNumb(userEntry1, userEntry2, userEntry3) { console.log(arguments)// keys from zero to keys.length - 1 "use strict"; sum = userEntry1 + userEntry2 + userEntry3; for (var arg in arguments) sum += Number(arguments[arg]); return sum; } addNumb(userEntry1, userEntry2, userEntry3); console.log(sum); 

您已經在對三個輸入的數字求和( sum = userEntry1 + userEntry2 + userEntry3; ),並且根本不需要for循環。 如果必須使用for循環,則應刪除sum = userEntry1 + userEntry2 + userEntry3; 線。 使用"use strict" ,然后必須刪除函數參數聲明,以避免“聲明變量但未使用”錯誤。

 var userEntry1 = Number(window.prompt("Enter in a number of your choice")); var userEntry2 = Number(window.prompt("Enter in a number of your choice")); var userEntry3 = Number(window.prompt("Enter in a number of your choice")); function addNumb(userEntry1, userEntry2, userEntry3) { "use strict"; var sum = userEntry1 + userEntry2 + userEntry3; return sum; } function addNumb2() { "use strict"; for (var i = 0, sum = 0; i < arguments.length; i++) { sum += Number(arguments[i]); } return sum; } console.log(addNumb(userEntry1, userEntry2, userEntry3)); console.log(addNumb2(userEntry1, userEntry2, userEntry3)); 

暫無
暫無

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

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