var、let、const的区别

  • Post author:
  • Post category:其他




var(函数作用域)

当使用var定义一个变量的时候,可以用来保存任何类型的值(未初始化时,保存一个undefined)

function test() {
  var a = 1;
  console.log(a); // 1
}
test()
console.log(a); //  Uncaught ReferenceError: a is not defined

使用 var 定义的变量会称为函数的局部变量。



var 声明提升

function fun() {
  console.log(age);
  var age = 18;
}

fun(); // undefined

上述代码等价于下列代码

function fun() {
  var age;
  console.log(age);
  age = 18;
}

fun(); // undefined

所谓声明提升就是使用 var 定义变量的时候,会将所有的变量声明都拉到函数作用域的顶部。



let(块级作用域)

块级作用域就是 {} 包裹的作用域。



暂时性死区

就是不会声明提升。

console.log(age); // 报错
let age = 18;



全局声明

就是定义在全局作用域下的变量,会不会称为window的属性

var age = 18;
console.log(window.age); // 18


let age = 18;
console.log(window.age); // undefined

这是因为let定义的变量只能在页面的生命周期内持续。



const(块级作用域)

定义一个常量的意思。一旦定义后不能修改值。(

注意:简单数据类型不能修改,引用数据类型内部可以修改

与let的区别:在声明变量的时候必须初始化变量。

同样存在暂时性死区问题。



版权声明:本文为s1594217816原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。