ES6知识总结

var let const

为什么会出现let const?
引入let const 配合块级作用域解决变量提升问题

{
  var i=2;
}
console.log(i);
//print:2
这里var i 跳出了当前代码块变成了全局变量

同理

for(var i=0;i<10;i++){
}
console.log(i); 这里i也同理
for循环类似以下代码:
{
var i=0;
if(i<10){
i++
}
}
console.log(i)

然而let const为解决这个问题

let

{
  let let_param=2;
}
console.log(let_param);
//ReferenceError: let_param is not defined
//其意思是let_param只能在当前代码块有效
##场景一:内层块级作用域未声明新的值 if(){}这个内层块级作用域依然属于外层的作用域下
{
let a=0;
if(true){
a=2;
}
console.log(a);
//print:2
}

场景二:内层块级作用域声明了新的值 这样相当于内外层两个都是独立的变量

{
let a=0;
if(true){
let a=2;
}
console.log(a);
//print:0
}

const
let保证变量名指向的内存地址可变,内存里的数据可变
但是const保证变量名指向的地址不变,不保证该地址的数据不变

//当const为常量时
const a=1;(指向1这个内存地址)
a=2;(指向2这个内存地址)
//TypeError:"PI" is read-only
//当const为对象时
const obj={}
obj={}//ERROR:改变了新的内存地址空间
//但是可以为这个原来的内存地址空间 新增属性
const _obj=[];
_obj.push(1);
const obj_obj={};
obj_obj.attr_a="attr_a";

你可能感兴趣的:(ES6)