前端面试题---变量提升、作用域和严格模式

文章详细解释了JavaScript中的变量提升(Hoisting),包括变量和函数声明的提升机制;作用域的概念,如全局、函数和块级作用域;以及严格模式(StrictMode)的作用,如消除不安全语法,提高代码质量和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.解释一下JavaScript中的Hoisting(变量提升)是什么,以及它是如何工作的?

Hoisting(变量提升)是JavaScript中的一种行为,它指的是在代码执行之前,变量和函数的声明会被提升到当前作用域的顶部。这意味着可以在声明之前使用这些变量和函数,而不会引发错误。

JavaScript引擎在代码执行之前会进行两个步骤:编译阶段和执行阶段。在编译阶段,JavaScript引擎会扫描整个代码,将变量和函数的声明提升到当前作用域的顶部。这样在执行阶段时,变量和函数就可以被正常使用了。

具体来说,变量提升有两种情况: 

1.变量声明的提升

在一个作用域中,使用var关键字声明的变量会被提升到当前作用域的顶部。例如

console.log(x); // 输出 undefined
var x = 5;

在上面的代码中,变量x的声明被提升到了顶部,因此console.log(x)不会引发错误,但输出结果为undefined,因为变量x在赋值之前被提升了。

2.函数声明的提升

使用函数声明的方式创建的函数也会被提升到当前作用域的顶部。例如 

myFunction(); // 调用函数

function myFunction() {
  console.log("Hello");
}

在上面的代码中&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值