let和const关键字声明变量和常量是es6新出的语法,var是es5声明变量的语法。
首先说var在声明变量时有一些局限性:
它具有变量提升的特性,比如说在代码的顺序是console.log(a)然后定义变量var a = 5。此时执行代码不会报错,而是会打印undefined,因为在执行代码时,会把var定义的变量名提到同级函数作用域的最前面,只声明而不赋值所以会undefind。这样做有一些坏处就是可能会导致一些难以察觉的错误发生,降低代码的可阅读性。
还有就是作用域的问题,就是var变量的话只有函数作用域而没有块作用域,所以说如果在函数里面定义了一个条件语句同时里面还给了var x = 10这样的变量声明语句,就可以在这个函数里面进行访问该变量。这样的话容易引起错误的发生,比如说命名冲突问题。
然后就是var关键字允许重复声明同一变量,后面声明的变量值会覆盖前面声明的变量值,这样的话不便于阅读,容易引起潜在的错误。
然后看看let和const这两个es6中的新关键字。 let是声明变量、const是声明常量,在常量声明之后不允许再进行重新赋值
首先它们不存在变量提升的特性,必须是先声明再去使用,否则会报错。
其次就是他们声明的变量都具有块级作用域,这样做可以可以见面因变量命名冲突而带来的错误。
最后let const声明的变量和常量禁止重复声明,这有助于提升代码的规范性。
总的来说es6提出的let const关键字可以提升代码的整体质量和开发效率。