在使用 canvas
時(shí),為了判斷 canvas
中的 getContext
方法是否存在糖声,就使用了常用的 if
判斷條件來(lái)阻止代碼繼續(xù)往下執(zhí)行:
let canvas = document.querySelector('#canvas')
if (!canvas.getContext) {
return;
}
但是代碼似乎并沒(méi)有正常的運(yùn)行,并且瀏覽器控制臺(tái)拋出一個(gè)錯(cuò)誤:
Uncaught SyntaxError: Illegal return statement
(未捕獲的語(yǔ)法錯(cuò)誤:非法的返回語(yǔ)句)
stackoverflow上面提了一個(gè)相同的問(wèn)題酬核。
并回答給出了原因:return
僅在函數(shù)內(nèi)部有意義庆捺。
也就是說(shuō) return
只能在函數(shù)內(nèi)部使用才可以:
function myFun() {
return '...';
}
既然 return
只能在函數(shù)內(nèi)部使用榨汤,那么我想當(dāng) getContext
不存在時(shí)军掂,用其他方法終止代碼執(zhí)行就可以了轮蜕。
那么什么時(shí)候可以終止代碼繼續(xù)執(zhí)行呢?當(dāng)程序拋出一個(gè)錯(cuò)誤的時(shí)候似乎就可以終止代碼繼續(xù)執(zhí)行了:
throw new Error();
最終蝗锥,我把開(kāi)始的 return
改成了 throw new Error
跃洛,并且拋出了相應(yīng)的提示信息:
let canvas = document.querySelector('#canvas')
if (!canvas.getContext) {
throw new Error('沒(méi)有找到 canvas 中 getContext 方法!');
}