一文读懂Javascript中var、let和const的区别,包括提升hoisting(文章非常简短易懂,适合小白)

 

一张表格整理var、let和const的区别

关键词

范围

提升

可以重新分配

可以重新声明

var

函数作用域

let

块作用域

const

块作用域

相信在上面的表格中,大家有疑问的应该是提升,那么下面就给大家来讲讲js中的提升

在JavaScript中,提到“提升”(hoisting)通常是指变量声明和函数声明的“提升”行为。简单的理解就是无论变量或函数在代码中的位置如何,都会在作用域的顶部被创建。

var变量提升

给大家举一个例子就明白什么是var的变量提升了

console.log(a) // undefined

var a = 3;

// 可以隐式的理解为

var a;

console.log(a);

a = 3;

上面的代码中 a打印出undefined,而没有报错,这就是变量提升。

js代码编译阶段,var变量和function函数会被js引擎放入到变量环境中,并且var变量会被默认设置为undefined。需要注意的是,var变量只有创建和初始化被提升,赋值并没有被提升。

函数提升

function的创建、初始化和赋值均会被提升,所以函数可以在声明之前正常调用,代码如下:

a();
function a()
{    
console.log('执行代码')
}
// 输出 执行代码 
// 隐式等于
function a()
{   
  console.log('执行代码')
}
a();

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

测试开发Kevin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值