2016-06-23 4 views
1

私はthis online toolを使用していますが、私はgrunt-uglifyを使って同じコードで同じエラーを出していますが、このコードを評価すると、エラー番号expected :が返されます。入れ子になっていないので、if-elseケースです。Uglifyはネストされたif-elseのために働くことができません

サンプルコード。

$._ext_ILST = { 
    changeColorLabel: function() { 
     spots = app.documents[0].spots; 
     var colorLabelArray = new Array(); 
     for (var i = 0; i < spots.length; i++) { 
      try { 
       if (spots[i].toString() !== "[Spot]") { 
        if (spots[i].name.indexOf('$') == 0) { 
         colorLabelArray.push(spots[i].name.substring(1, spots[i].name.length)); 
        } 
       } 
      } catch (e) {} 
     } 

     var colorInfo = getColorInfromation(); 
     var obj = {} 
     if (colorInfo.length > 0) 
      colorLabelArray = []; 
     for (var i = 0; i < colorInfo.length; i++) { 
      colorLabelArray.push(colorInfo[i].colorName); 
      if ((colorInfo[i].hasOwnProperty('colorType') && colorInfo[i].colorType != "teamColorVariable")) { 
       if (colorInfo[i].isGarmentColor) { 
        obj[colorInfo[i].colorName] = "G" 
       } else { 
        obj[colorInfo[i].colorName] = "D" 
       } 
      } else if (!colorInfo[i].hasOwnProperty('colorType')) { 
       if (colorInfo[i].isGarmentColor) { 
        obj[colorInfo[i].colorName] = "G" 
       } else { 
        obj[colorInfo[i].colorName] = "D" 
       } 
      } 
     } 
     var mainColorObj = { 
      colorLabelArray: colorLabelArray, 
      colorMapArray: obj 
     } 
     return JSON.stringify(mainColorObj); 
    } 
} 

縮小さouputを -

$._ext_ILST = { 
    changeColorLabel: function() { 
     spots = app.documents[0].spots; 
     for (var a = new Array, b = 0; b < spots.length; b++) try { 
      "[Spot]" !== spots[b].toString() && 0 == spots[b].name.indexOf("$") && a.push(spots[b].name.substring(1, spots[b].name.length)) 
     } catch (c) {} 
     var d = getColorInfromation(), 
      e = {}; 
     d.length > 0 && (a = []); 
     for (var b = 0; b < d.length; b++) a.push(d[b].colorName), d[b].hasOwnProperty("colorType") && "teamColorVariable" != d[b].colorType ? d[b].isGarmentColor ? e[d[b].colorName] = "G" : e[d[b].colorName] = "D" : d[b].hasOwnProperty("colorType") || (d[b].isGarmentColor ? e[d[b].colorName] = "G" : e[d[b].colorName] = "D"); 
     var f = { 
      colorLabelArray: a, 
      colorMapArray: e 
     }; 
     return JSON.stringify(f) 
    } 
}; 

すべてのヘルプは理解されるであろう。

おかげで、 Upendra sengar

答えて

0

あなたはすべきであるlint your JS first。私wrapped your code in an IIFEはあなたより良いuglification結果を与えるために

/* globals app, $, getColorInfromation */ 

(function(app, $, JSON, undefined) { 
    $._ext_ILST = { 
     changeColorLabel: function() { 
      var spots = app.documents[0].spots; 
      var colorLabelArray = []; 
      var i; 
      for (i = 0; i < spots.length; i++) { 
       try { 
        if (spots[i].toString() !== "[Spot]") { 
         if (spots[i].name.indexOf('$') === 0) { 
          colorLabelArray.push(spots[i].name.substring(1, spots[i].name.length)); 
         } 
        } 
       } catch (e) {} 
      } 

      var colorInfo = getColorInfromation(); 
      var obj = {}; 
      if (colorInfo.length > 0) 
       colorLabelArray = []; 
      for (i = 0; i < colorInfo.length; i++) { 
       colorLabelArray.push(colorInfo[i].colorName); 
       if ((colorInfo[i].hasOwnProperty('colorType') && colorInfo[i].colorType != "teamColorVariable")) { 
        if (colorInfo[i].isGarmentColor) { 
         obj[colorInfo[i].colorName] = "G"; 
        } else { 
         obj[colorInfo[i].colorName] = "D"; 
        } 
       } else if (!colorInfo[i].hasOwnProperty('colorType')) { 
        if (colorInfo[i].isGarmentColor) { 
         obj[colorInfo[i].colorName] = "G"; 
        } else { 
         obj[colorInfo[i].colorName] = "D"; 
        } 
       } 
      } 
      var mainColorObj = { 
       colorLabelArray: colorLabelArray, 
       colorMapArray: obj 
      }; 
      return JSON.stringify(mainColorObj); 
     } 
    }; 
}(app, $, JSON)); 

注:

はあなたのコードのバージョンでpost-lintの(とわずかに修正します)。また、あなたのコードを一掃しただけであることに気づいてください...もっと良くするためにできることはもっとたくさんあります(例えば、if文の括弧、私は個人的には明示的にhoist all my varsなどが好きです)。

次に、私はすぐにonline minification/uglification toolのためにgoogledとあなたのコードのlintedバージョンをコピー/貼り付けました。それはあなたが探しているものだ場合、および/またはコードはまだ機能であれば

!function(o,r,e,a){r._ext_ILST={changeColorLabel:function(){var r,a=o.documents[0].spots,n=[];for(r=0;r<a.length;r++)try{"[Spot]"!==a[r].toString()&&0===a[r].name.indexOf("$")&&n.push(a[r].name.substring(1,a[r].name.length))}catch(t){}var l=getColorInfromation(),c={};for(l.length>0&&(n=[]),r=0;r<l.length;r++)n.push(l[r].colorName),l[r].hasOwnProperty("colorType")&&"teamColorVariable"!=l[r].colorType?l[r].isGarmentColor?c[l[r].colorName]="G":c[l[r].colorName]="D":l[r].hasOwnProperty("colorType")||(l[r].isGarmentColor?c[l[r].colorName]="G":c[l[r].colorName]="D");var m={colorLabelArray:n,colorMapArray:c};return e.stringify(m)}}}(app,$,JSON); 

わからない、うまくいけば、それは正しい方向にあなたを置く:ここでの結果ですか?

関連する問題