作用域

作用域

作用域是什么

  • 如果查找的目的是对变量进行赋值,那么使用LHS查询。

  • 如果目的是获取变量的值,就会使用RHS查询。

  • 不成功的RHS引用会导致ReferenceError异常。

  • 不成功的LHS引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用LHS引用的目标作为标识符,或者抛出ReferenceError异常(严格模式下)

  • ReferenceError同作用域的判别失败有关

  • TypeError则代表作用域判别成功了,但是对结果操作是非法或不合理的。

词法作用域

作用域气泡

欺骗词法evalwith

setTimeout()第一个参数可以是字符串,其内容可以被解释为一段动态函数代码。

new Function()最后一个参数可以接受代码字符串,并将其转化为动态生成的函数。

如果引擎在代码中发现eval()或with,它只能简单地假设关于标识符位置的判断都是无效的,所有的优化可能都是无意义的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容