虽然我已经定义了变量(JavaScript),但它被认为是未定义的

虽然我已经定义了变量(JavaScript),但它被认为是未定义的,javascript,Javascript,为什么fin变量没有定义,即使我在for循环之前声明了它 a = function(...args) { total = 0; for (each of args) { total += each; } total = total.toString(); while (total.length != 1) { var fin = 1; for (int i = 0; i < total.length;

为什么fin变量没有定义,即使我在for循环之前声明了它

a  = function(...args) {
    total = 0;
    for (each of args) {
        total += each;
    }
    total = total.toString();
    while (total.length != 1) {
        var fin = 1;
        for (int i = 0; i < total.length; i++) {
            fin *= parseInt(total[i]);
        }
        total = fin.toString();
    }

    return parseInt(fin);
}



a(1,2,3,4,5,6)
a=函数(…args){
总数=0;
对于(每个参数){
总数+=每个;
}
total=total.toString();
while(total.length!=1){
var-fin=1;
对于(int i=0;i
如果我删除所有的
int
引用,它会正常运行

a=函数(…args){
总数=0;
对于(每个参数){
总数+=每个;
}
total=total.toString();
while(total.length!=1){
var-fin=1;
对于(i=0;iconsole.log('result',result)
您正在使用一个不存在的
int
关键字,以及一些未定义的
int
对象。你要做的是:

a=函数(…args){
总数=0;
对于(每个参数){
总数+=每个;
}
total=total.toString();
while(total.length!=1){
var-fin=1;
for(设i=0;i
要使此代码正常运行,您需要做几项更改

  • JavaScript不会理解任何东西,例如int(因为它不是强类型的),因此在for循环中删除int关键字并使用let或var

    对于(leti=0;i
  • 您必须使用fin*=Number.parseInt(总计[i]),而不是int.parseInt


  • JavaScript没有
    int
    关键字。您的
    int i
    在JavaScript中无效。使用
    var i
    let i
    total
    应使用
    let
    定义每个
    (或
    var
    )。因此,
    a
    也应该如此。@fedesc它是用
    var
    定义的,所以它的作用域是整个函数。@fritzdulty这是不正确的。小心,
    i
    正在污染全局作用域。我正在修复他的代码中的直接错误。当然,这是一个混乱的除了其他原因,但它现在运行哈哈