ES6中的let const

 es6 中新添加了let 和const两个关键字。


使用let声明变量的注意事项:

1、使用let声明的变量,所声明的变量只在命令行所在的代码块中有效。

2、使用let声明的变量在域解析的时候不会被提升。

例如下面代码会报错:

let f=10;
function fn(){
  f=7;   //暂时性死区
  let f=2;
};
fn();
浏览器会报错f未定义。上面代码不大明白???

3、使用let不允许在同一作用域下声明已经存在的变量。

例如下面代码会报错:

var a=10;
let a=10;

4、在循环体之内是一个作用域,在循环体之中是一个作用域。
for(let i=0;i<3;i++){
	let i=10;
	console.log(i)  //会3次输出10
}
console.log(i)  //报错
上面这个理解的不是很清楚???



☆ let在for循环中的使用:

例如下面代码每次log出来的都是i最后的值。我们需要使用闭包或者绑定属性才能达到理想的效果。
var allBtn = document.querySelectorAll("button")
for(var i=0;i<allBtn.length;i++){
  allBtn[i].οnclick=fucntion(){
    console.log(i);
  }
}


使用let就没有那么麻烦:下面代码可以正常输出0、1、2

var allBtn = document.querySelectorAll("button")
for(let i=0;i<allBtn.length;i++){
  allBtn[i].οnclick=fucntion(){
    console.log(i);
  }
}

const

const除了具备以下let所具有的前三点:

1、使用let声明的变量,所声明的变量只在命令行所在的代码块中有效。

2、使用let声明的变量在域解析的时候不会被提升。

3、使用let不允许在同一作用域下声明已经存在的变量。(不能重复声明)

const还需要额外注意:

1、声明的时候必须赋值

2、不可以被更改,基本类型的值不允许改变其值,复杂类型不能改变其引用,但是可以改变对象里面的某个属性。例如:

const a={k:555}
a.k=666;  //可以改值成功
a={k:777}  //报错




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值