在es6中新增了块级作用域。块级作用域由{}包括,if语句和for语句里面的{}也属于块作用域
let和const都是es6新增的声明方式
let和const的区别
let用于声明变量,比如
let num=1;
num=2;(这时num的值就变成了2)
而const用来声明常量,并且声明之后就不能改变
比如 cosnt pi=3.14;
补充:
const obj={a:3};
obj.a=4;
我们用const会更好一点,因为const实际上保证的不是变量的值不能改变,而是变量的指向的内存地址不得改变。对于简单的数据(数字,字符串,布尔值),值是保存在变量指向的那个内存地址中,因此也等同于常量。
但是如果遇到以下情况只能用let
let obj={a:3};
obj={a:4}
let和var的区别
1.let具有块级作用域,let内声明的变量只在块级作用域内有效。var声明的变量是全局的,
2.var存在变量提升,前置声明输出的是undefined,而let前置声明会报错,我们称之为暂时性死区,
3.let不能重复声明同一个变量而var可以,
4.var声明的变量会挂载到window上,而let声明的变量不会。