[ES6] 块级绑定

使用var声明变量

  1. 全局变量挂载到全局对象:全局对象成员污染问题

  2. 允许重复的变量声明:导致数据被覆盖

  3. 变量提升:怪异的数据访问、闭包问题

ES6不仅引入了let关键字来解决变量声明的问题,同时引入了块级作用域的概念。
块级作用域:代码执行时遇到花括号,会创建一个块级作用域,花括号结束,销毁块级作用域。

使用let声明变量

  1. let声明的变量不会挂载到全局对象
  2. let声明的变量,不允许当前作用域范围内重复声明
  3. let不会存在变量提升,因此不能在声明之前使用它

使用const声明常量

前三条与let相同
const必须在声明时赋值,且不可以重新赋值

// 报错
const a;
a = 1

// 正确 
const a = 1;

//  报错 不可重新赋值
const a= 1;
a = 2

注意细节:

  1. 常量不可变,指声明的常量的内存空间不可变,但并不保证内存空间中的地址指向的其他空间不可变
const obj = {
  name : "abc",
  age : 19
}
obj.name = "cba";
console.log(obj.name) // cba
  1. 常量的命名
    1)特殊的常量:该常量从字面意义上,一定是不可变的,比如圆周率或者其他一些绝对不可能改变的配置。
    该常量的名称全部使用大写,多个单词之间用下划线分割

2)普通常量:使用和之前一样的命名即可

const PI = 3.14
const MOON_EARTH_DISTANCE = 134534513

3.for循环中不可使用常量,但在for-in循环中可用。

你可能感兴趣的