怎么建网站维护网页
const
特点:
- const不允许在同一作用域重复声明,块级作用域
 - 暂时性死区,在声明之前,该变量是不可用的
 - const声明的是一个只读变量,声明之后不能改变其值,一旦声明必须初始化
 - 但是const定义的对象属性是可以修改的
 
块作用域由{}包括,if语句和for语句里面的{}也输入块作用域
对象是引用类型的,const定义的对象是保存指向对象的指针,这里的“不变”是指对象的指针不变,而修改对象中的属性不会使对对象的指针发生变化。
    const a=3{const a=1console.log(a)//1}{//a是对象,可以修改对象的属性const a={name: 1}console.log(a)//{ name: '1' }a.name=2console.log(a)//{ name: '2' }}console.log(a);//3 
var
- 变量提升,声明的变了会自动提升到他所在作用域的顶部
 
function fun() {console.log(variable); var variable = "hello";
}
fun(); // 结果是 undefined
 
因为上面的代码等同于:
function fun() {var variable;console.log(variable); variable = "hello";
}
fun(); // 结果是 undefined
 
- var可以重复声明同一个变量
 - 在使用 var 的时候,最常见的问题就是对迭代变量的奇特声明和修改
 
for (var i = 0; i < 5; ++i) { setTimeout(() => console.log(i), 0) 
} 
// 你可能以为会输出 0、1、2、3、4 
// 实际上会输出 5、5、5、5、5
 
let
- 块级作用域
 - 不允许在同一个块作用域中重复声明变量
 - 暂时性死区
 
let和var的区别:
for (var i = 0; i < 5; ++i) { // 循环逻辑 
} 
console.log(i); // 5for (let j = 0; j < 5; ++j) { // 循环逻辑
} 
console.log(j); // ReferenceError: j 没有定义
 
声明风格
尽量不使用var
const优先,let次之
使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码提前发现不合格的声明。
