let const 总结
let const 不会污染全局变量 不会声明到window上
let a=1;
console.log(window.a)//undefind
let const 不存在变量提升 (他所声明的变量一定要在声明后使用,否则报错)
a=1;
let a=2;//报错
let const 不允许在用一个作用域中重复声明同一个变量
let b=1;
let b=2;//报错
块级作用域 ES5中没有块级作用域,只有全局作用域和函数作用域
{
let a =1
console.log(a)
}
/* 在两个作用域中声明的 所以不会报错 */
{
let a=2;
console.log(a)
}
let 定义的变量值 是可以被改变的
let a =1;
a=2 ;
console.log(a)
const声明的一个常量是 值是不可以改变的(地址不变即可),但是如果存储的是一个地址 指向对象,可以改变对象里的内容
const num=1;
num=2;//报错 不可以修改
console.log(num)
const obj ={a:1}
//obj=[];//报错
obj.a=2
console.log(obj)
如果真的想将对象冻结,应该使用 Object.freeze方法
const foo = Object.freeze({});
//常规模式下,下面一行不起作用
//严格模式下,改行会报错
foo.prop = 123;
未完待续