目录
一、字面量和变量
字面量:是一些不可改变的值。比如:1 2 3 4 "h"。字面量都是可以直接使用的,但是我们一般不会直接使用字面量
变量:可以用来保存字面量,而且变量的值是可以任意改变的。变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量而很少直接使用字面量,所以可以通过变量对字面量进行描述。
在JS中,我们通常使用var关键字来声明一个变量:
var a;
//为变量赋值
a=123;
a=456;
//声明和赋值同时进行
var b=789;
var c=9;
console.log(a);
但是 ES6 中新增了命令let 和 const ,是用于解决 ES5 中使用 var 命令声明变量的一些问题而出现的。那么var主要有哪些问题呢?
- 没有块级作用域
- 重复声明
- 绑定全局作用域
- 变量提升
二、let、const、var的区别?
let、const和var都可以定义变量,那么let、const和var的区别是什么?这也是我们前端在面试时可能会遇到的面试题。
Var:没有块级作用域,创建和初始化的时候有变量提升,可以重复声明,
Let:有块级作用域,不允许重复声明,暂时性死区
Const:有块级作用域,不允许重复声明,暂时性死区,const声明的变量不能直接修改值,但是const定义是指向这个对象的地址,地址不变,引用的数据可以改变。
三、什么是暂时性死区?
刚刚我们在解释let、const和var的区别时,说到了暂时性死区,那么什么是暂时性死区呢?
暂时性死区:创建了变量但是没有初始化,没法使用变量,只在变量创建阶段有变量提升,在初始化阶段没有提升,形成了暂时性死区。