变量作用域
- JavaScript中变量的作用域
- 采用静态作用域(变量定义的位置决定了变量的引用)
- 没有块级作用域,即不存在像C/Java语言一样在if/for块级中的变量作用域;
- 只有全局作用域和函数(局部)作用域
- 词法环境
- 词法环境是用来描述静态作用域的数据结构,一种可视化的描述方式,包括环境记录(record)和外部词法环境引用(outer)
- record,指形参、变量、函数声明、对象等,是当前词法环境内部声明的引用
- outer,当前词法环境的外部词法环境
- 示例
-
词法环境与执行过程
词法环境与执行过程 -
特殊的词法环境,带名称的函数表达式
带名称的函数表达式- 代码中的A作为函数表达式,不是函数声明所以不会定义到全局环境;
- A会创建一个新的词法环境,指向全局,环境记录包含函数A,且不能被修改
网友评论