var,let 和 const 有什么区别?

297 阅读1分钟

1.block是什么?

block是块语句(或者说复合语句)用于组合零个或者多个语句,该块由一对大括号{}界定

块声明: {StatementList}

2.块级作用域是什么?

在非严格模式下var或者函数声明时,通过var声明的变量或者非严格模式下创建的函数是没有块级作用域的。

举个例子:

var x = 1;
{
    var x = 2;
}

console.log(x);  //输出的是2,因为var没有块级作用域这么一说


let x = 1;
{
    let x = 2;
}

console.log(x); //输出的则是1,let是有块级作用域的

3.let 和 const的比较

let和const都是有块级作用域的,如下所示:

image.png

image.png

如果没有块级作用域,输出的就是2了,因为有块级作用域,所以输出为1。

4.什么是变量提升?

看另一篇博客:变量提升

5.var,let,const的相同点和区别:

var,let,const比较相同点不同点
var
let
const
  • 块级作用域

    • var没有,let和const有。
  • 初始化

    • const定义的变量必须要初始化,且不能被修改
    • var定义的变量可以修改,如果不初始化,则为undefined
    • let是块级作用域,内部使用let定义后,对函数外部无影响。
  • 变量提升

    • let/const没有变量提升
    • var是有变量提升的

个人理解得很浅显,欢迎批评,指正,谢谢。