外贸推广免费网站,创意灵感的网站,免费做网站网站的软件,杭州酒店网站建设const
特点#xff1a;
const不允许在同一作用域重复声明#xff0c;块级作用域暂时性死区#xff0c;在声明之前#xff0c;该变量是不可用的const声明的是一个只读变量#xff0c;声明之后不能改变其值#xff0c;一旦声明必须初始化但是const定义的对象属性是可以修…const
特点
const不允许在同一作用域重复声明块级作用域暂时性死区在声明之前该变量是不可用的const声明的是一个只读变量声明之后不能改变其值一旦声明必须初始化但是const定义的对象属性是可以修改的 块作用域由{}包括if语句和for语句里面的{}也输入块作用域 对象是引用类型的const定义的对象是保存指向对象的指针这里的“不变”是指对象的指针不变而修改对象中的属性不会使对对象的指针发生变化。 const a3{const a1console.log(a)//1}{//a是对象可以修改对象的属性const a{name: 1}console.log(a)//{ name: 1 }a.name2console.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(); // 结果是 undefinedvar可以重复声明同一个变量在使用 var 的时候最常见的问题就是对迭代变量的奇特声明和修改
for (var i 0; i 5; i) { setTimeout(() console.log(i), 0)
}
// 你可能以为会输出 0、1、2、3、4
// 实际上会输出 5、5、5、5、5let
块级作用域 不允许在同一个块作用域中重复声明变量暂时性死区
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声明可以让浏览器运行时强制保持变量不变也可以让静态代码提前发现不合格的声明。