[英]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.