有人可以告诉我为什么这段代码不会运行?

时间:2016-09-26 02:11:04

标签: javascript arrays for-loop math

var howM = prompt("How many cards?")

var arr = [];
for(var i = 0; i < howM; i++)
arr.push(prompt("Enter a card:"));

console.log(arr)


 for(var i = 0; i <= howM; i++)
 var sum = 0;
 var eXt = arr[i]
 eXt = eXt.replace (/-/g, "");
 for (i = 0; i < eXt.length; i++) {
 sum += parseInt(eXt.substr(i, 1)); }
 console.log(sum);

它告诉我这个&#34; TypeError:无法读取属性&#39;替换&#39;未定义的     在评估时间:13:11&#34;这对我来说毫无意义,因为它正好在它之上。

3 个答案:

答案 0 :(得分:1)

循环cin >> fahr; 的主体未包含在大括号if(fahr==-999) break; 中。因此,只有语句for(var i = 0; i <= howM; i++)将在循环中执行。另外,你可能想说{..}。所以你想要这样的循环:

var sum = 0;

答案 1 :(得分:0)

检查评论:

i < howM

答案 2 :(得分:0)

第二个for循环周围没有括号。您可以 必须 使用括号 除非 它是一个单行循环。例如:

这很好:

for (var i=0;i<100;i++)
    console.log(i);

这不是:

for (var i=0;i<100;i++)
    var x = i;
    x++;
    console.log(x);

所以第二个for循环应该是这样的:

for(var i = 0; i <= howM; i++) {
   var sum = 0;
   var eXt = arr[i]
   eXt = eXt.replace (/-/g, "");
   for (i = 0; i < eXt.length; i++) {
       sum += parseInt(eXt.substr(i, 1)); 
   }
   console.log(sum);
}

同样在第一个for循环中,我会使用arr[i] = value代替。