#Js篇:var、let和 const

var

  1. 声明的变量具有函数作用域或者全局作用域;
  2. 存在变量提升,即在执行上下文中,变量会被提升到函数或全局作用域的顶部,但初始化的赋值不会提升;
  3. 可以重复声明同一个变量不会报错;
  4. 可以被重新赋值;
  5. 声明的变量会成为全局变量;
  6. 没有暂时性死区,可以在声明之前访问变量,值为 undefined。

let

  1. 声明的变量具有块级作用域,即在{}内部声明的变量只能在该内部可见;
  2. 也存在变量提示,但是在初始化之前访问会导致暂时性死区,在变量声明之前访问会跑出错误;
  3. 在统一作用域内重复声明同一变量会报错;
  4. 可以被重新赋值;
  5. 不可成为全局属性;
  6. 暂时性死区内访问会抛出错误。

const

  1. 声明的变量具有块级作用域,即在{}内部声明的变量只能在该内部可见;
  2. 也存在变量提示,但是在初始化之前访问会导致暂时性死区,在变量声明之前访问会跑出错误;
  3. 在统一作用域内重复声明同一变量会报错;
  4. 如果声明的变量是常量,重新赋值就不能改变,
    ----如果使用 const 声明一个对象或数组,可以修改对象或数组的属性或元素,但不能重新赋值一个新的对象或数组给这个变量。

----对于使用 const 声明的对象或数组,虽然不能重新赋值一个新的对象或数组给这个变量,但可以修改对象或数组的属性或元素。这是因为 const 保证的是变量指向的引用不变,而不是引用的值不变。
5. 声明的变量不会成为全局对象的属性
6. 暂时性死区内访问会抛出错误。

你可能感兴趣的:(Js篇,javascript,前端,开发语言)