JS 中的 let、const、var
1、JS 中有几种定义变量的方法?
letconstvarclassimportfunction
2、let、const、var 有什么区别?
var | let | const |
|---|---|---|
| 没有块级作用域 | 有块级作用域 | 有块级作用域 |
声明全局变量在 window 下 | (全局属性下) 全局变量不在全局属性下 | 全局变量不在全局属性下 |
| 重定义变量不会报错 | 会报错 | 会报错 |
| 声明变量 | 声明变量 | 声明一个常量 |
| 存在变量提升 | 不存在变量提升 | 不存在变量提升 |
| 声明之后随时赋值 | 声明之后随时赋值 | 声明之后立即赋值 |
3、const 定义常量可不可以修改?
const定义基础类型是不可以修改的;const定义引用类型是可以修改引用类型里面的值。
4、如果我想 const 定义引用类型也不能改变它的值该怎么做?
Object.freeze;- 代理(
proxy/Object.defineProperty); - 修改对象的
configurable、writable属性。
5、如何在 ES5 的情况下实现 let 和 const?
1. 实现 let
可以通过自执行函数。
2. 实现 const
可以通过 Object.defineProperty() 实现,设置 writable。