先说一下我们通常会使用什么定义变量,
var a = 12;
//这是我们经常用的变量定义方式
console.log(a) //12
注意:
var 定义的变量只存在全局作用域和函数作用域(局部作用域)
列如:(全局)
var a = 12;
function fun(){
console.log(a)
}
fun() //12
列如:(局部)
var a = 12;
function fun(){
var a = 5;
console.log(a)
}
fun() //5
let定义
先说一下let,举个例子:
let 和 const 定义的变量是存在块级作用域的,什么是块级作用域?
列如:
if(true){var a = 12;}//var声明
console.log(a)//12;
if(ture){let a = 12;}//let声明
console.log(a)//报错
这就是let的块级作用域,只在所声明的区域内可用;
let定义的变量必须先定义再使用
var定义;
console.log(a);//undefined
var a = 12;
let定义;
console.log(a);//报错
let a = 12;
let和const是没有变量的声明提升/预解析
let定义的变量不可重复定义:
var 定义:


const定义
const定义和let的区别基本相似;但是有一点就是const定义的变量不可修改

列如:


push也是可以的,如果你不想让它修改的话可以使用Object.freeze() 具体语法参数可以看一下文档 developer.mozilla.org/zh-CN/docs/…
在const定义的时候是可以修改对象和数组的;。前面说的不可修改是不可以修改类型(暂时至少我认为是这么认为的)
比如:
const a = [1,2,3];
const a = true;
是不可以这样直接修改的;