let、var、const区别

发布时间 2023-09-26 16:20:09作者: Wanker

1、var:传统的变量声明方式

在ES5及之前的JavaScript版本中,我们通常使用var关键字声明变量。var具有以下特点:

  • 函数作用域:变量的作用域限制在声明的函数内部,如果在函数外部访问,将会报错。

  • 变量提升:变量声明会被提升到作用域的顶部,无论声明语句在哪里,都会被视为在作用域的开始处声明的。

  • 可以重复声明:同一个作用域内,可以多次使用var声明同一个变量,后面的声明会覆盖前面的。

  var a = 1;
      var a = 2;
      console.log(a);  //打印输出 2

 console.log(b); //打印输出 undefined
      var b = 1;
      var b = 2;

2、let:块级作用域的变量声明方式

let关键字是在ES6中引入的新特性,具有以下特点:

  • 块级作用域:使用let声明的变量仅在其所在的代码块内有效,如果在代码块外部访问,将会报错。这种特性有助于提高代码的可读性和可维护性。

  • 不可重复声明:同一个作用域内,不可以多次使用let声明同一个变量,否则会报错。

  • 没有变量提升let声明的变量不会被提升到作用域的顶部,只有在声明语句之后才能使用。

 function test() {
        let x = 12;
        console.log(x);
      }
      console.log(test());     //打印结果为 12
      console.log(x);     //报错 x is not undefined 即x没被定义

在上面的例子中,变量x只在大括号内部的代码块中有效,尝试在代码块外部访问会导致错误。这种行为使得我们可以更好地控制变量的作用范围,提高代码质量。

3. const: 声明常量的方式

const关键字也是在ES6中引入的新特性,与let相似,但具有以下特点:

  • 常量:使用const声明的变量是常量,意味着一旦被赋值后,就不能再修改。常量的命名通常使用全大写字母,并采用下划线分隔单词。

  • 块级作用域:与let一样,const也具有块级作用域。

  • 不可重复声明:同一个作用域内,不可以多次使用const声明同一个变量,否则会报错。

const PI = 3.14;
      console.log(PI); //打印 3.14
      PI = 3.1415;  //报错:常量赋值不可改变

4、总结

参考文章:

一看就懂的var、let、const三者区别 - 知乎 (zhihu.com)