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] 举报,一经查实,本站将立刻删除。