还是老样子,通俗的来说:按照严格程度 :var<let<const
进行比较对比,能够更好的理解:
1、关于定义
var 可以多重定义 例如:var A="嘿嘿" var A=" 哈哈" 不会报错 值为 哈哈
let 不能重复定义,但可以修改值 例如 :let A="嘿嘿" let A="哈哈" 会报错 只能 let A="嘿嘿" A="哈哈" 值为 哈哈 表示的是修改值
const不能重复定义和let一样,更严格的是不能修改值,定义为啥就是啥 例如:let A="嘿嘿" let A="哈哈" 会报错 let A="嘿嘿" A="哈哈" 也会报错
如果一定想修改const的值,可以将const所定义的值改为数组,通过指针访问数组访问不同的值。
2、关于声明
var 在未定义就调用(console.log(A); var A="嘿嘿"; 打印出来的是undefined)的时候,会声明提升,简单点说就是,系统帮你先定义了,但是值为undefined
let必须先定义(let A;),可以后赋值 A="嘿嘿",
const,必须先定义,先赋值,不然直接报错!!!最严格了
3、关于作用域
let、const由于要求严格,所以可以形成块级作用域,用大括号括起来就可以了,var不行!