1

在使用 canvas 时,为了判断 canvas 中的 getContext 方法是否存在,就使用了常用的 if 判断条件来阻止代码继续往下执行:

let canvas = document.querySelector('#canvas')
if (!canvas.getContext) {
  return;
}

但是代码似乎并没有正常的运行,并且浏览器控制台抛出一个错误:

Uncaught SyntaxError: Illegal return statement
(未捕获的语法错误:非法的返回语句)

stackoverflow上面提了一个相同的问题。

并回答给出了原因:return 仅在函数内部有意义

也就是说 return 只能在函数内部使用才可以:

function myFun() {
  return '...';
}

既然 return 只能在函数内部使用,那么我想当 getContext 不存在时,用其他方法终止代码执行就可以了。

那么什么时候可以终止代码继续执行呢?当程序抛出一个错误的时候似乎就可以终止代码继续执行了:

throw new Error();

最终,我把开始的 return 改成了 throw new Error,并且抛出了相应的提示信息:

let canvas = document.querySelector('#canvas')
if (!canvas.getContext) {
  throw new Error('没有找到 canvas 中 getContext 方法!');
}

yhb_flydream
5 声望0 粉丝

I want something just like this!


引用和评论

0 条评论