还有一种叫做动态作用域,比如bash脚本,Perl的一些模式。
修改词法作用域
with
eval
性能不好:JavaScript引擎无法预先得知它们创建的词法作用域,无法预先在编译阶段做性能优化。
函数作用域
块级作用域
ES6之前
for循环和if无法形成真正意义上的块级作用域。
with
try … catch(err),err只在catch中有效,当一个作用域出现多个try…catch,静态代码检测工具会报错,可以给err重新命名为err1、err2等等。
补充:try…catch性能也很差。