改寫原生js 多條件if判斷語句時,采用三元方法,發生Uncaught SyntaxError: Unexpected token }
1 function compareImgSize() { 2 var coverImg = document.getElementById("bgimg"); 3 var coverSize = getImgNaturalDimensions(coverImg); 4 5 var coverSizeRate = coverSize[0] / coverSize[1]; 6 // if (coverSizeRate > 1.7){ 7 // imgPosition(33); 8 // }else if (coverSizeRate < 1.7 && coverSizeRate > 0.7){ 9 // imgPosition(12); 10 // }else if(coverSizeRate < 0.7){ 11 // imgPosition(0); 12 // } 13 14 coverSizeRate > 1.7 ? imgPosition(33) 15 : (coverSizeRate < 1.7 && coverSizeRate > 0.7) ? imgPosition(12) 16 : coverSizeRate < 0.7 ? imgPosition(0) 17 }
第一次以為是第16行判斷結束時沒有“;”,但當加入“;”時,又發生Uncaught SyntaxError: Unexpected token ;
后來補上else結束條件就解決了;如圖第17行;
1 function compareImgSize() { 2 var coverImg = document.getElementById("bgimg"); 3 var coverSize = getImgNaturalDimensions(coverImg); 4 5 var coverSizeRate = coverSize[0] / coverSize[1]; 6 // if (coverSizeRate > 1.7){ 7 // imgPosition(33); 8 // }else if (coverSizeRate < 1.7 && coverSizeRate > 0.7){ 9 // imgPosition(12); 10 // }else if(coverSizeRate < 0.7){ 11 // imgPosition(0); 12 // } 13 14 coverSizeRate > 1.7 ? imgPosition(33) 15 : (coverSizeRate < 1.7 && coverSizeRate > 0.7) ? imgPosition(12) 16 : coverSizeRate < 0.7 ? imgPosition(0) 17 :imgPosition(0); 18 19 }
總結:使用三元簡寫if多條件判斷語句時,必須有else結束語句結束;
完整形式
1 if(a條件){Something} 2 else if(b條件){Something}
改為:
1 a條件?Something 2 :b條件 ? Something 3 :Something;
