js多条件if语句简写发生Uncaught SyntaxError: Unexpected token }
改写原生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;