- const必须初始化,而且不能更改
- var仅在function是局部变量,其余都为全局变量();let一直充当局部变量,即便是在IF中,外界也不能访问
-
function a (){ var x = 10 console.log(x) } a() console.log(x) //这里为空
- 函数变量提升,提升也就是把定义的放在一段代码的最开头
-
var 的声明,存在变量提升。let 的声明,不存在变量提升。const 的声明,不存在变量提升。
-
for循环中,var定义相当于在for这一片区是全局的,所以值是最后一个;let是每个独立分开的,所以值不同
-
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[2](); var b = []; for (let k = 0; k < 10; k++) { b[k] = function () { console.log(k); }; } b[2](); 原因: i是var声明的,在全局范围内都有效,console.log(i),里面的i指向的就是全局的i,所以最后输出的是10。。 k是let声明的,只在本轮循环局部有效,console.log(k),每一次for循环的k都为新变量,所以最后输出的是2。
var可以重复申明,let不可以
var,let,const之间的区别
于 2019-05-23 18:05:35 首次发布