JavaScript面试题解析:变量提升与作用域
"JavaScript面试题和答案,涵盖了变量提升、作用域、闭包等核心概念。" 在这43道JavaScript面试题中,涉及到的关键知识点包括: 1. 变量提升(Hoisting): - JavaScript中的`var`声明的变量会被提升到其所在函数的作用域顶部,但在初始化阶段只赋值为`undefined`。 - `let`和`const`声明的变量也会被提升,但它们的初始化不会提升,即在声明之前访问会抛出`ReferenceError`,这一特性被称为“暂时性死区”(Temporal Dead Zone,TDZ)。 2. 作用域(Scope): - 全局作用域:在函数外部定义的变量在整个脚本中都可访问。 - 函数作用域:在函数内部定义的变量只能在该函数内部访问。 - `var`声明的变量具有块级作用域的假象,实际上是在包含它的函数或全局作用域中。 - `let`和`const`提供真正的块级作用域,它们在块(如`if`语句、`for`循环、`switch`语句或大括号`{}`)内有效。 3. 闭包(Closure): - 当函数可以记住并访问其词法作用域内的变量,即使函数在其定义的词法作用域之外执行,就会形成闭包。 - 在给定的示例中,`setTimeout`函数内的回调函数形成了闭包,能够访问外部函数(`for`循环)的`i`变量。然而,由于`var`和`let`在作用域上的区别,两段代码的输出不同。 4. `setTimeout`和异步执行: - `setTimeout`函数将回调函数放入事件队列,而不是立即执行。因此,`for`循环先执行完毕,然后才执行回调函数。 - 对于`var i`的情况,因为变量提升和作用域,`i`在所有`setTimeout`回调中都是同一个变量,所以最后输出将是3个3。 - 对于`let i`的情况,每个迭代的`i`都有自己的作用域,所以每个回调中的`i`保留了其循环时的值,输出是0,1,2。 5. 变量的赋值过程: - 创建变量:在内存中分配空间。 - 初始化变量:将变量设置为`undefined`。 - 真正赋值:给变量赋予实际的值。 6. `let`、`var`和`function`的提升区别: - `let`的创建被提升,但初始化不被提升。 - `var`的创建和初始化都被提升。 - `function`的创建、初始化和赋值都被提升。 这些面试题旨在考察开发者对JavaScript基础的理解,特别是作用域和变量管理,这些都是编写可靠和高效代码的关键。通过深入理解这些概念,开发者可以避免常见的陷阱,并更好地控制代码的行为。
![](https://csdnimg.cn/release/download_crawler_static/87912772/bg5.jpg)
剩余24页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 21
- 资源: 1813
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)