javascript中var,let,const的区别用法
来源:javascript中var,let,const的区别用法 - 简书
- var
var相比let就是管的比较宽,他的值可以被内部修改。
1 | function tests(){ |
- let
let是es6中新增定义,带有块级作用域,只会在所定义块生效。
1 | function test(){ |
const
const用来定义常量(可以是字符串,数组,函数,对象等),并且初始值不可为空,但他并不是不可更改的。举个栗子:1
2
3
4
5
6
7
8const c;//会产生报错.
const d = 1;//正确
const arr = [1, 2];
arr.push(1);//正确 [1, 2, 1]
arr[0] = 3;//正确 [3, 2, 1]
arr = [];//错误TypeError: invalid assignment to const `arr'可见,如果有需要,可以改变const里所存储的值,但它的指向空间是无法操作的。
有趣的面试例子
面试的时候很经常遇到一个例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
//这个例子执行完输出什么结果?
//答案是 5,5,5,5,5
//如果想要输出0,1,2,3,4改怎么实现?
//其中一种方案就是把var换成let就可以了。let的块级作用域在这里就体现出来了。
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
Comments