let 、const和var的区别
let、const、var在js中都是用于声明变量的,在没有进行ES6的学习前,我基本只会使用到var关键字进行变量的声明,但在了解了ES6之后就涉及到了块级作用域以及let,const了。
let与const
let是用于替代var来声明变量(var是ES6之前用来声明变量的关键词)
const是用来声明常量的(var,let声明变量时,变量一旦初始化之后,还可以重新赋值,const声明常量,一旦初始化,就不能重新赋值了,否则会报错)
const详细介绍
使用const的原因:const 就是为了那些一旦初始化就不希望重新赋值的情况设计的
注意事项:使用const声明常量,一旦声明,就必须立即初始化
特殊说明:const声明常量,允许在不重新赋值的情况下修改它的值(基本数据类型不可,只有引用数据类型可以,引用类型引用的是地址不是值)
//基本数据类型赋值为常量之后是不可修改的 const name='zhangsan'; name='nn'; //x //引用数据类型 const student={age:18}; //student={}; student.age=19;
const的傻瓜使用指南
毕竟基础数据类型去修改const会报错,那其实可以都用const进行变量的声明,当变量后面发生变化时自然会报错(前提是你还记得住,还是不太推荐这个傻瓜指南的)。
块级作用域
咱就是说块级作用域简单说明一下,const和let的使用区别是会涉及到这个的
啥是作用域
常见的作用域主要分为几个类型:全局作用域、函数作用域、块状作用域、动态作用域。
const,var和let的区别
let、const、var的区别:①重复声明 ②变量提升 ③暂时性死区 ④块级作用域 ⑤window对象的属性和方法(全局作用域中)
1. 区别一:重复声明
- var允许重复声明,let、const不允许
-
2. 区别二:变量提升
- var会提升变量的声明到作用域的顶部,但let和const不会(说白了就是let和const没有变量提升)
-
3. 区别三:暂时性死区
- 只要作用域内存在let、const,它们所声明的变量或常量就会自动“绑定”这个区域,不再受外部作用域的影响
-
4. 区别四:window对象的属性和方法(全局作用域中)
- 全局作用域中,var声明的变量,通过function声明的函数,会自动变为window对象的变量,属性或方法,但const和let不会
-
5. 区别五:块级作用域
- var没有块级作用域,let和const有块级作用域
-
- 全局作用域中,var声明的变量,通过function声明的函数,会自动变为window对象的变量,属性或方法,但const和let不会
-
- var会提升变量的声明到作用域的顶部,但let和const不会(说白了就是let和const没有变量提升)