JS中的作用域链是JavaScript语言中的一个核心概念,它决定了变量查找的规则。在JavaScript中,当一个变量被引用时,解释器首先会在当前作用域中查找该变量,如果在当前作用域没有找到,那么就会向上级作用域查找,直到找到该变量或者到达全局作用域。整个查找过程形成一个链条,因此被称作“作用域链”。 在JavaScript中,主要有两种变量声明方式,一种是使用var关键字声明,另一种是不使用var关键字直接声明变量。它们在作用域方面的表现是不同的。当使用var声明变量时,该变量的作用域是局部的,也就是说,它只能在声明它的函数内部访问。而如果不使用var声明变量,那么这个变量是全局的,它可以在整个程序中访问。 例如,在函数内部不使用var关键字直接赋值给一个变量,该变量实际上是定义在全局作用域中的,只是被当前函数访问而已。如下代码展示了这种行为: ```javascript function fn01() { data = 100; // 没有使用var声明 function fn02() { data = 1000; // 同样没有使用var声明 function fn03() { data = 10000; // 同样没有使用var声明 } fn03(); } fn02(); } fn01(); console.log(data); // 输出将是10000 ``` 在上面的代码中,尽管data变量在三个嵌套的函数中被赋值,但因为没有使用var关键字,所以它们都是同一个全局变量data。当fn03函数执行完后,data变量的值是10000。因此,当在全局作用域中调用`console.log(data);`时,输出结果是10000。 作用域链的存在有以下几个重要的知识点: 1. 局部作用域:在函数内部使用var声明的变量,只在其函数内部有效,不会影响到外部作用域。 2. 全局作用域:不使用var声明的变量或者在函数外部声明的变量是全局作用域,在任何地方都可以访问。 3. 作用域链查找规则:当需要查找一个变量时,解释器会先在当前作用域内查找,如果没有找到,就向上一级作用域查找,一直重复这个过程直到全局作用域。 4. 作用域提升:JavaScript有一个特性叫做“变量提升”(hoisting),这意味着变量和函数声明会在代码执行之前被处理。但是变量提升只会提升声明,而不会提升赋值,因此函数声明通常优先于变量声明(如果变量和函数同名的话)。 理解作用域链对于编写可预测的JavaScript代码非常重要,它可以帮助开发者避免一些常见的错误,比如意外地创建全局变量。此外,掌握作用域链的工作机制,也是进行更高级概念如闭包(closure)、立即执行函数表达式(IIFE)等理解的基础。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 5
- 资源: 965
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)