ES6相关知识点以及实际应用(一)let const var

74 阅读2分钟

let var const

var是ES6之前的写法,var存在变量提升,无块级作用域,可重复声明同一变量,声明的变量均可改,函数作用域.

var的变量提升允许先console后声明变量,此时输出为undefined,这种写法在项目中会使人觉得反直觉,所以尽量别用var,ES6提供了let来声明变量.

let没有变量提升,有块级作用域,不可重复声明同一变量,声明的变量均可改.

如果没有用let声明变量,那么直接输出是报错的,显示此变量未定义,而且不可以重复声明变量,会报错显示变量已定义.

const没有变量提升,有块级作用域,不可重复声明同一变量,const声明一个基本数据类型变量,声明之后不允许改变.

一旦声明必须初始化,不可只声明变量而不赋值,否则会报错,但如果声明一个引用数据类型比如一个对象,是可以修改他的属性的,const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动,此处体现的是类似于C语言中的指针,一种引用变量和内存之间的引用关系,const只要不破坏这个引用关系,也可以修改引用类型的具体内容.

开发中使用时的问题

作用一:在for循环中使用var和let是有区别的,var创建的是同一个变量,因为他没有块级作用域,但let创建的是不同变量.

作用二:不会污染全局变量

let RegExp = 10;
console.log(RegExp);
console.log(window.RegExp);

这样不会报错,let定义的变量不会影响window上挂载的全局变量.

作用三:更常用const

在开发中默认下使用const,而只有在开发者知道这个变量未来会被修改时,才使用let,我愿称之为变量不变原则.