referenceerror 表示引用了未声明的标识符。javascript 沿作用域链查找变量,全局也找不到时抛出该错误;与 typeerror(操作非法)、syntaxerror(语法错误)不同,它专指标识符不存在于任何作用域。

会抛出 ReferenceError 错误。
为什么是 ReferenceError?
JavaScript 在运行时访问一个未声明的变量,引擎会沿着作用域链从当前作用域逐级向上查找;一旦查到全局作用域仍未找到该变量名,就确认这个标识符根本不存在于任何作用域中。此时引擎判定为“引用了一个未定义的标识符”,触发 ReferenceError 异常。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
常见报错信息形如:ReferenceError: xxx is not defined
和其它错误的区别
- TypeError:变量存在但操作不合法(比如调用非函数、读取 null 的属性)
- SyntaxError:代码写法错误,发生在解析阶段,还没执行到变量查找
- ReferenceError:专用于“变量名找不到”这一语义场景,是作用域链查找失败的明确信号
注意几个关键点
- 查找只看是否“声明过”,不关心是否赋值;
let x;声明后访问x不会报错(值为undefined),但完全没声明就访问就会报ReferenceError -
let/const声明的变量在声明前访问,会触发暂时性死区(TDZ),报的也是ReferenceError,但原因不同(不是没找到,而是禁止访问) -
var声明会被提升,所以通常不会在函数内因“未声明”而报错,但若在全局作用域外直接访问一个未声明的var变量,依然会报ReferenceError
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










