为何未声明的JavaScript变量本应为全局变量却触发报错?
问题解析
代码示例
function fun() { G_Scope = "car"; } console.log(G_Scope);
报错信息
Error:
ReferenceError: G_Scope is not defined
核心原因
- 你只定义了
fun函数,但从来没调用过它,函数内部的G_Scope = "car"这行赋值代码根本没执行。 - 未声明变量被赋值时会成为全局变量,但这个逻辑的前提是赋值操作必须被触发。现在赋值逻辑躺在函数里没跑,全局作用域里根本不存在
G_Scope,直接访问自然会抛出ReferenceError。
修复验证
只要调用fun()触发赋值,就能正常读取全局变量:
function fun() { G_Scope = "car"; } fun(); // 调用函数执行赋值 console.log(G_Scope); // 输出:car
额外说明:如果代码开启了严格模式("use strict"),未声明就赋值变量会直接报错,不管函数是否执行,但你的场景明显是函数未调用导致的问题。
内容的提问来源于stack exchange,提问作者satish pal
相关产品推荐
相关产品推荐

