const a=2
定义变量的这个过程中,具体会发生什么,能否给个详细的过程说明,网上没查到资料
const a=2;
其实就是运行解释器在内存中找个地方存放了值2
这个常量,然后分配了一个标记a
指向这个内存。这样一来,以后使用a
就会使用到这个值,而且这个值因为放置并且标记了不可更改(是常量),所以不能再给a
赋值。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
楼上给的链接写的还是有点简单了,在这做个补充:
什么是 LHS 查询 和 RHS 查询:
一段代码以蔽之:
LHS 和 RHS 查询都会在当前执行作用域中开始,如果没有找到标识符,那就沿着作用域链向上查找,最后抵达全局作用域后停止。
ReferenceError 和 TypeError 异常:
总个结:变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量a(LHS查询),如果能够找到就会对它赋值。