一张表格整理var、let和const的区别
关键词 | 范围 | 提升 | 可以重新分配 | 可以重新声明 |
var | 函数作用域 | 是 | 是 | 是 |
let | 块作用域 | 否 | 是 | 否 |
const | 块作用域 | 否 | 否 | 否 |
相信在上面的表格中,大家有疑问的应该是提升,那么下面就给大家来讲讲js中的提升
在JavaScript中,提到“提升”(hoisting)通常是指变量声明和函数声明的“提升”行为。简单的理解就是无论变量或函数在代码中的位置如何,都会在作用域的顶部被创建。
var变量提升
给大家举一个例子就明白什么是var的变量提升了
console.log(a) // undefinedvar 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();
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!