JavaScript中定义变量常量的方法有var、let、const,区别如下:
- var:作用域是函数体内,存在变量提升现象。
- let:ES6增加,作用域是代码块,不存在变量提升现象
比如:for循环定义的变量就建议用let
for (let i = 0; i < results.length; i++) {
......
}
- const:ES6增加,常量定义,不能再修改
const a = {b:'b'};
a = {c:'c'}; //a不能被修改,错误:Uncaught SyntaxError: Invalid or unexpected token
a.b = 'bb'; //这个是可以的,a.b 和 a是不同的变量
变量提升:JS引擎用将所有var声明和function函数声明都提到函数内的最高处。
网友评论
所谓的不能修改具体是指什么?如果是 const a = { b: 'b' }; a.b = 'c'; 算修改吗?
是不是应该说的更清楚些?
a = { c: 'c' } 改变了 a 的引用,指向了一个新对象。a.b = 'c' 没有改变 a 的引用,指向的还是原来的对象。