[js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?
在浏览器环境下JS 解析器解析到未定义变量时,会抛出 Uncaught ReferenceError 错误,JS 引擎会停止解析后面的代码,但之前的代码不受影响,并跳出该代码块。下面看看具体代码。<!DOCTYPE html>
<html lang="en"><head><title>
代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走</title><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /></head><body><script>console.log(1);</script><script>console.log(2);console.log(a);console.log(3);</script><script>console.log(4);</script></body>
</html>JS 引擎首先加载第一个<script></script> 代码块,进入解析的三个流程(1、词法语法分析,2、预解析,3、执行阶段),之后在控制台输出 1;接着 JS 引擎加载第二个<script></script> 代码块,进入解析的三个流程,控制台输出 2,当解析 console.log(a); 这行代码时,因为 a 是未定义的变量,会抛出 Uncaught ReferenceError 错误,JS 引擎会停止解析后面的代码,即 JS 引擎不会执行 console.log(3); 这行代码,并跳出第二个<script></script> 代码块;立马加载第三个<script></script> 代码块,进入解析的三个流程,在控制台输出 4。
个人简介
我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论
主目录
与歌谣一起通关前端面试题