JavaScript 中 var、let 和 const 三者的区别

258 阅读1分钟

JS 中的 letconstvar

1、JS 中有几种定义变量的方法?

  • let
  • const
  • var
  • class
  • import
  • function

2、letconstvar 有什么区别?

varletconst
没有块级作用域有块级作用域有块级作用域
声明全局变量在 window(全局属性下) 全局变量不在全局属性下全局变量不在全局属性下
重定义变量不会报错会报错会报错
声明变量声明变量声明一个常量
存在变量提升不存在变量提升不存在变量提升
声明之后随时赋值声明之后随时赋值声明之后立即赋值

3、const 定义常量可不可以修改?

  1. const 定义基础类型是不可以修改的;
  2. const 定义引用类型是可以修改引用类型里面的值。

4、如果我想 const 定义引用类型也不能改变它的值该怎么做?

  1. Object.freeze
  2. 代理( proxy/Object.defineProperty );
  3. 修改对象的 configurablewritable 属性。

5、如何在 ES5 的情况下实现 letconst

1. 实现 let

可以通过自执行函数。

2. 实现 const

可以通过 Object.defineProperty() 实现,设置 writable