var
用来定义表达式
存在变量提升。
let
es6新增,用来定义变量0
和var比较,let没有变量提升的说法,尝试使用
打印结果报错
let配合块作用域使用可以解决全局变量污染的问题:
在for循环外部可以打印出i,for循环中定义的i 变量作为全局变量被使用,使用 let 来定义变量后:
for循环内部i被打印,for 循环外部i 没有被打印,let的出现解决了js中全局变量污染的问题,解决了js中一直存在的一个逻辑弊端。
const
es6新增,用于定义常量(常量指定义后不再发生改变)。
const定义必须赋值,
赋值后不能改变
尝试着改变 W_NUM的值
如上图意料之内,报错了。
ps~~~ 以上内容纯属个人理解,如有雷同,那绝对是个意外。