作用域

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

什么是作用域

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

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

全局作用域

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

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

弊端:

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

函数作用域

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

块级作用域

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

1. 在一个函数内部

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

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

作用域链

自由变量

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

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

什么是作用域链

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

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

作用域与执行上下文

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

解释阶段

词法分析

语法分析

作用域规则确定

执行阶段

创建执行上下文

执行函数代码

垃圾回收

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

相关文章

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • [ES6]1.1作用域

    作用域 全局作用域(global/window) 函数作用域/局部作用域(function) 块状作用域({}) ...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • JavaScript作用域分类

    JavaScript作用域分类全局作用域局部作用域函数作用域块级作用域catchwithlet 和 const 什...

  • JS基础---05作用域

    JavaScript基础 1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作...

网友评论

      本文标题:作用域

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