js 居然有9种作用域

68 阅读1分钟
  1. 其实在js的世界里面常见作用域居然多达9种 那么咱们来看一下,如何手动去调试一下去验证

  2. script

image.png

  1. node 下有无script

image.png

  1. try catch 下其实也是具备这个错误的作用域的-- catch block image.png

  2. 那么对于try catch finnaly 其实还是block块级作用域

image.png

  1. 那么对于 With Block 作用域 呢

image.png 其实本质上就是with Block 里面对象

  1. js 中一个非常重要的概念是闭包 closure 作用域

image.png 其实闭包会有个专门的 closure作用域保持内部引用的外部变量

image.png

  1. eval 作用域

image.png 会发现这个eval 作用域保存了所有变量,不管有没有被引用,因为它根本不会去分析字符串呀,也没法分析,万一你这段 JS 是动态从服务端获取再 eval 的呢?那就只能无差别去引用啦

  1. 模块作用域 需要在package.json 中去指定这个type 为 module

image.png image.png

  1. 最后一个eval作用域它是有一个自己独立的作用域的

image.png 单独保持当前上下文内的变量