为什么这段js代码中只有if,没有else?

window.onload = initAll;

function initAll() {

var ans = prompt("Enter a number","");

try {

if (!ans || isNaN(ans) || ans<0) {

throw new Error("Not a valid number");

}

alert("The square root of " + ans + " is " + Math.sqrt(ans));

}

catch (errMsg) {

alert(errMsg.message);

}

}


Gnayoul
浏览 2404回答 3
3回答

snowmanJS

/*try{}这段语句是抛出异常;catch(errMsg){}是捕获异常。如果,if语句中条件为真(即,变量ans为非数字或是小于0的数字时)时,就会执行throw new Error("Not a valid number");抛出一个异常。此时if后面的语句alert("The square root of " + ans + " is " + Math.sqrt(ans));就不会被执行。接着执行catch (errMsg) {alert(errMsg.message)}捕获到异常并弹出异常为:Not a valid number;如果,if语句中条件为假(即,变量ans为大于或等于0的数字)时,就不会抛出异常,继而执行alert("The square root of " + ans + " is " + Math.sqrt(ans));,catch (errMsg) {alert(errMsg.message)}也不会被执行!综上,else在这里就没有必要了。*/try {if (!ans || isNaN(ans) || ans<0) {throw new Error("Not a valid number");}alert("The square root of " + ans + " is " + Math.sqrt(ans));}catch (errMsg) {alert(errMsg.message);}}

stone310

没有else就是单纯判断,true就执行语句1,然后无论true还是false都执行语句2if(){执行语句1};执行语句2;如果有else就判断,true就执行语句1,false就执行语句2if(){执行语句1};else{执行语句2};

chwech

话说不用else子句也行的,有什么奇怪的?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript