【发布时间】:2020-12-10 13:21:49
【问题描述】:
在 javascript 中,编译阶段查找所有声明并将其与其适当的范围相关联。
案例1
a = 2;
console.log(a);
如果不用于严格模式,则假定 sn-p 实际处理为:
var a;
a = 2;
console.log(a);
输出:2
案例2
如果声明发生在 console.log() 之下
console.log(a);
var a = 2;
在第 1 行:编译器将在其范围内检查 a 的声明,如果未找到,则全局范围将分配一个,并且相同的代码将再次假定为相同
var a;
console.log(a);
a = 2;
输出:未定义 // 因为解释器读取控制台时没有赋值
案例3
console.log(a);
a = 2;
输出:RefErr
为什么这会引发引用错误而不是未定义?
【问题讨论】:
标签: javascript