2016-11-21 65 views
0

當我運行這個腳本時,它停留在提示用戶輸入第一個數字。它似乎不會數x。Javascript loop stuck

function doMath() { 
    for (var x = 1; x < 3; x = x + 1) { 
     var var1; 
     var var2; 
     var var2; 
     var num; 
     if (x = 1) { 
      var num = prompt("Enter first number please"); 
      var1 = parseInt(num) 
     } 
     else if (x = 2) { 
      var num = prompt("Enter second number please"); 
      var2 = parseInt(num) 
     } 
     else { 
      var num = prompt("Enter third number please"); 
      var3 = parseInt(num) 
      return Math.min(var1, var2, var3); 
     } 
    } 
} 
+5

您使用賦值操作符,而不是比較的。將'if(x = 1)'更改爲'if(x === 1)'等等 – Phil

回答

1

有你的代碼的幾個問題:
- 在你的for循環x將永遠只能是12看到的是:(x < 3),這意味着它永遠不會返回結果
- 要檢查的平等在if語句需要======這是分配
- 你是重新聲明的變量在循環的每次迭代,從而丟失任何存儲的信息
- 回報的for循環完成

全部放在一起:

function doMath() { 
    var var1; 
    var var2; 
    var var2; 
    var num; 
    for(var x =1; x <= 3; x++){ //use x++ instead of x = x + 1 (easier to read) 
     if (x == 1) { //fix here 
      var num = prompt("Enter first number please"); 
      var1 = parseInt(num) 
     } else if (x == 2) { //and here 
      var num = prompt("Enter second number please"); 
      var2 = parseInt(num) 
     } else { 
      var num = prompt("Enter third number please"); 
      var3 = parseInt(num) 
     } 
    } 

    return Math.min(var1, var2, var3); 
} 
4

見行:

if (x = 1) 

如果x == 1,而是正在一個賦值x = 1您還沒有檢查。後者總是如此,這意味着條件總是被滿足,這就是爲什麼你的代碼不斷提示用戶。 同樣適用於其他條件。他們都是任務。希望這可以幫助!

0

你是不是調用該函數,而不是輸出最終結果。

這是一個工作解決方案。希望能幫助到你!

function doMath() { 
 
    var var1; 
 
    var var2; 
 
    var num; 
 
for(var x =1; x <= 3; x++){ //use x++ instead of x = x + 1 (easier to read) 
 
    if (x == 1) { //fix here 
 
    var num = prompt("Enter first number please"); 
 
    var1 = parseInt(num) 
 
    } else if (x == 2) { //and here 
 
    var num = prompt("Enter second number please"); 
 
    var2 = parseInt(num) 
 
    } else { 
 
    var num = prompt("Enter third number please"); 
 
    var3 = parseInt(num) 
 

 
    } 
 
    } 
 

 
    return Math.min(var1, var2, var3); 
 
} 
 
document.write(doMath());

+0

這不是一個可行的解決方案,因爲它實際上並沒有添加3個值,因爲變量在for -循環 – JanR