TS/JS---const、let、var的区别和适用场景
在ES5及之前的JavaScript版本中,通常使用var
关键字声明变量。
var对作用域的限制相当错乱,这里指的错乱不是var本身,而是编写层次上的。举个例子,变量的作用域限制在声明的函数内部,如果在函数外部访问,将会报错,这个归类于函数作用域。然而变量声明如果被提升到作用域的顶部,无论声明语句在哪里,都会被视为在作用域的开始处声明的,如果代码量过大,这很考验开发者的能力(对于个人来说是记忆和逻辑上的折磨)。更不用说在同一个作用域内,可以多次使用var
声明同一个变量,后面的声明会覆盖前面的。这些var的特性常常导致意外的bug。为了解决这些问题,ES6引入了let
和const
。

let: 块级作用域的变量声明方式
let
是在ES6的新特性。
1.let
声明的变量仅在其作用域内有效,如果在外部访问会报错。这种特性使得代码更容易维护。
2.同一个作用域内不可以多次使用let
声明同一个变量,否则会报错。
3.let只有在声明语句之后才能使用。
这种特性使开发者可以更好地控制变量的作用范围,逻辑更清晰,可读性更好,定位错误也会比较容易。

const: 同样具有块级作用域
const
关键字也是在ES6中引入的新特性,与let
相似。
使用const
声明的变量是常量,意味着一旦被赋值后,就不能再修改。常量的命名通常使用全大写字母,并采用下划线分隔单词。其他特性和let 一样。
常量的不可修改性可以避免错误的赋值操作,提高代码的可靠性。
总结:
let
和const
声明变量已经足够应付大大部分场景,而且它们更安全、更易于维护。只有在特殊情况下(例如需要在函数作用域内声明变量),才使用var,个人是尽量不使用,在down一些老的源码时也会根据情况尽量的把var修改为let 或const
。