@babel/plugin-transform-b​​lock-scoping 做了什么不是 babel 核心行为的一部分?

问题描述

The docs 有很多不足之处,Babel 插件有时就是这种情况。

插件还验证所有 const 变量。常量的重新分配是一个运行时错误,它会为那些插入必要的错误代码

我不知道这是什么意思?这不是总是会导致运行时错误吗?

而且它提供的示例仅使用了 letvar,这让我更加困惑。

解决方法

在 es5 中,const 不存在。如果将代码编译为 es5,则所有 const 声明都将变为 var 声明。该插件将为 const 值插入运行时代码以在为它们分配新值时抛出错误,这可能是通过将引用转换为访问器函数调用。