微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ES6

let 与块级作用域

  • 作用域:
    某个成员能够起作用的范围
  • 块:
    花括号包裹起来的范围

2015之前

if(true){
	var foo='zce'
}
console.log(foo);

es6

if(true){
	let foo='zcw';
	console.log(foo);
}
//外部无法访问foo

解决计数器中出现的问题

for(var i=0;i<3;i++){
	for(var i=0;i<3;i++){
	console.log(i);
}
console.log('内层结束 i='+i);
}
//内层var 声明覆盖了外层的声明
//改进:把var改为let

典型:

var elements=[{},{},{}];
for(var i=0;i<elements.length;i++){
	elements[i].oncolick=function(){
		console.log(i)
	}
}
elements[2].onclick();

改进解决
使用闭包解决 借助函数作用域摆脱全局作用域的影响

var elements=[{},{},{}];
for(var i=0;i<elements.length;i++){
	elements[i].oncolick=(function(i){
		return function(){
		console.log(i);
		}
	})(i)
}
elements[2].onclick();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐