簡體   English   中英

JavaScript-條件拋出未捕獲的語法錯誤

[英]JavaScript - conditional throwing an uncaught syntax error

我目前正在研究一個挑戰,該挑戰是將以下函數中輸入的任意數量的任意數字轉換為貨幣(用字符串表示,其中每三個字符用逗號分隔)。 一切都還好,直到我意識到如果輸入的數字的長度為4,則需要將逗號放置為1,234,而不是123,4。 當我在for循環中包裝初始if語句時,該函數似乎已經失控了一些。 (1)我一直在控制台中拋出“ Uncaught SyntaxError:Unexpected token else”。 (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

以下塊中的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中。

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

刪除},

stringCh.push(newStrng[i]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM