【每日一题】- 2020-04-17 - ES 关键字
azl397985856 opened this issue · 3 comments
azl397985856 commented
假如你的代码使用了ES关键字。 比如
var const = 'something';
这在ES6以前的Runtime 运行是没有问题的。 但是在支持ES6+的Runtime 就会报错。 如果项目有很多这样的东西么,那么如何解决这个问题呢?
扩展:
var let = 'something';
是可以的,这是为什么?
stale commented
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
azl397985856 commented
写一个babel 插件转化一下,思路:
- 找到变量声明语句
VariableDeclaration
- 判断 VariableDeclarator.id.name 是否是 const
- 如果是,则替换为一个作用域内不存在的变量名
- 如果否,则跳过。
关于如何找到作用域中不存在,实际上 eslint 有专门的 api 可以用。 如果你自己写的话, 基本上就是扫描所有的变量声明然后把每一个变量声明记录到一个哈希表中即可。
特别需要注意的是:
- 作用域有类型区分,有函数,全局和块作用域。
- 作用域的查找机制,即内外层作用域的遮蔽问题。
stale commented
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.