JavaScript - 条件抛出未捕获的语法错误

时间:2015-08-20 21:59:40

标签: javascript syntax-error conditional-statements

我目前正在努力将以下函数中输入的任意数量的任意数量转换为货币(以字符串表示,其中每三个字符用逗号分隔)。一切都没问题,直到我意识到如果输入的数字的长度是4,那么逗号将需要被放置为1,234而不是123,4。 当我在for循环中包装初始if语句时,似乎函数已经失控了一点。 (1)我不断被抛出一个' Uncaught SyntaxError:意外的令牌'在控制台中。 (2)我认为可能是因为尝试在for / if / else周围放置一个if / else。任何关于我的错误的灯都会非常感激。查理

function toCurrency(price){


      var newStrng = price.toString().split("");

      var stringCh = [];

      if(newStrng.length===4){ 

          console.log("gotcha");
          stringCh = newStrng.splice(1,0,",");
          return stringCh;

        } else {

        for(var i = 0; i < newStrng.length; i++) {
          if(i %3 === 0 && i !== 0){

              stringCh.push(",");
              stringCh.push(newStrng[i]);

          }  
              } else {

                  stringCh.push(newStrng[i]);
              } 
        }

        var finallyDone = stringCh.join("");
        return finallyDone;

    }//EO function

3 个答案:

答案 0 :(得分:1)

以下块中的if语句

for(var i = 0; i < newStrng.length; i++) {
      if(i %3 === 0 && i !== 0){

          stringCh.push(",");
          stringCh.push(newStrng[i]);

      }  
          } else {

              stringCh.push(newStrng[i]);
          } 
    }

}之前有一个额外的else。把它拿出来你应该不会收到语法错误。

通过确保代码正确缩进,您可以更轻松地发现此类错误,以便您可以看到哪些括号与哪些块相关联。虽然我很欣赏它可以在源代码中合理地缩进,并且可能没有完全复制到SO。

答案 1 :(得分:1)

}循环内的错误位置有for,需要在else块之后移动。实际上,if语句位于for循环中,但else块位于循环外部,这是无效的语法。

function toCurrency(price){
    var newStrng = price.toString().split("");
    var stringCh = [];

    if(newStrng.length===4){ 
        console.log("gotcha");
        stringCh = newStrng.splice(1,0,",");
        return stringCh;
    } else {
        for(var i = 0; i < newStrng.length; i++) {
            if(i %3 === 0 && i !== 0){
                stringCh.push(",");
                stringCh.push(newStrng[i]);
            } else {
                stringCh.push(newStrng[i]);
            }
        } 
    }

    var finallyDone = stringCh.join("");
    return finallyDone;

}//EO function

答案 2 :(得分:0)

之后

删除},

stringCh.push(newStrng[i]);