探究var、let、const 的区别?
简介:var 已经是众所周知了 但是新加入的let 和const 有什么特性呢?
先来说一下这个用var来定义变量的bug
1.在JS函数中的var声明,其作用域是函数体的全部。
for(var i=0;i<10;i++){ var a = 'a'; } console.log(a);
明明已经不在for循环内了,却还能访问for循环的变量a。
2.循环内变量共享
for (var i = 0; i < 3; i++) { setTimeout(function () { console.log(i) }, 1000); }
按照正常逻辑他应该会打印出0、1、2。结果却打印了3个3。
那let的出现就是能解决这个var的bug的 可以数试着把上面的var改成let看浏览器会不会报错?
我个人觉得 let 相较于var 更严谨。
let定义的变量拥有块级作用域。 也就是说用let声明的是有作用域的,而不是整个外层函数。如果上面的例子用let定义就会发生变化
用let重定义变量就会抛出错误
代码说话
let a = 'a'; let a = 'b';
这两行代码就是错误的 浏览器会报错 因为重复定义了a。
除了这些不同之外,应该let和var是差不多的得了
const
第三个就是 const,const是用来定义常量的。
就是说给它赋个值,任你在浏览器再怎么赋值 他的值都不会发生改变的。
常量常量 ,不变的才叫常量。