块级作用域:var缺陷以及为什么要引入let和const?

本文探讨了JavaScript中变量提升的问题及其带来的挑战,以及ES6如何通过引入块级作用域和`let`、`const`关键字来解决这些问题。变量提升导致的非直观行为包括变量覆盖和未被销毁的变量。ES6通过在词法环境中为`let`和`const`声明的变量创建独立的作用域,从而避免了这些问题,同时保持了对旧代码的兼容性。文章还解释了执行上下文中变量环境与词法环境的区别,帮助读者理解JavaScript如何支持新的块级作用域特性。