作用域

作者: 姜浩_19强化班 | 来源:发表于2022-04-03 23:11 被阅读0次

    什么是作用域

    作用域规定了当前执行代码对变量的访问权限

    作用域最大的作用就是变量隔离,不同作用域下的同名变量不会有冲突

    全局作用域

    1.最外层函数和最外层函数外面定义的变量拥有全局作用域

    2.未定义直接赋值的变量自动声明拥有全局作用域

    弊端:

    污染全局命名空间,容易引起命名冲突

    函数作用域

    指声明在函数内部的变量,只在固定的代码片段能够访问到

    块级作用域

    可以通过新增的let 、const声明,块级作用域在如下情况被创建

    1. 在一个函数内部

    2. 在一个代码块(由一对花括号包裹)内部

    块级作用域声明的变量不会提升到代码块顶部

    作用域链

    自由变量

    需要用到某个变量,但是在当前作用域中没有定义这个变量,这个变量称为自由变量。

    自由变量的值通过向父级作用查找得到

    什么是作用域链

    向父级作用域找,没找到,再一层一层向上寻找,直到全局作用域。这一层一层的关系就是作用域链

    查找某个自由变量,是要去创建这个函数的作用域取值,而不是调用。--静态作用域

    作用域与执行上下文

    JavaScript属于解释型语言,JavaScript的执行分为:解释和执行两个阶段。

    解释阶段

    词法分析

    语法分析

    作用域规则确定

    执行阶段

    创建执行上下文

    执行函数代码

    垃圾回收

    执行上下文在运行时确定,随时可能改变;作用域在定义时就确定,并且不会改变。

    相关文章

      网友评论

          本文标题:作用域

          本文链接:https://www.haomeiwen.com/subject/oymqsrtx.html