JS---作用域和作用域链

作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。

//常犯的一个错误

<button id="button1">Button1</button>
<button id="button2">Button2</button>
<button id="button3">Button3</button> <script type="text/javascript">
function buttonInit(){
for(var i=1;i<4;i++){
var b=document.getElementById("button"+i);
b.addEventListener("click",function(){ alert("Button"+i);},false);
}
}
window.onload=buttonInit;
</script> //结果都是 button3!!
//这是因为,for等没有块级作用域的概念,就算是 函数,也不算是块级作用域,只能叫做为函数作用域。var i =1,相当于在函数buttonInit()里的全局变量,每次的循环,都会改变这个变量。所以i最终的结果都是3!! //如何修改呢
function buttonInit(){
for(var i=1;i<4;i++){
var b = document.getElementById("button" + i);
(function (a)
{
b.addEventListener("click", function () { alert("Button" + a); }, false);
})(i);
//采用自调用函数
}
}

最新文章

  1. MyEclipse使用心得:SVN插件安装方法
  2. jade模板
  3. Java单例模式实现(线程安全)
  4. 【转】COM技术内幕(笔记)
  5. Unity3d知识体系思维导图
  6. 烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢
  7. asp.net 页面跳转传值的几种方式
  8. [网络技术]网关 路由器 OSI
  9. pytest学习笔记(三)
  10. 修改hosts文件解决OneDrive被墙的问题
  11. ceph运维命令合集
  12. 可扩展的listview--Expandablelistview
  13. Unity3D 之UGUI 滑动条(Slider)
  14. oracle 同样数据删除(仅仅留一条)
  15. java中Timer计时器使用
  16. SDN期末作业
  17. Spring Cloud学习笔记-003
  18. 理解JSON Web Token (一)
  19. shiro源码篇 - shiro的session的查询、刷新、过期与删除,你值得拥有
  20. Glufster挂载失败Mount failed. Please check the log file for more details解决办法

热门文章

  1. 将webcam设置为网站favicon
  2. leecode第二百九十二题(Nim游戏)
  3. (23)socket多进程并发
  4. numpy和matplotlib
  5. Python的类的下划线命名的区别
  6. sublime和vscode 格式化Json ——两步走
  7. 还能不能愉快地起一个web服务啦?——1st Step!白话http和代码交互的那点儿事儿~
  8. 2019.3.16数据结构考试(Problem 1. rotinv)(循环逆序对)
  9. 中国建设工程造价管理系统 http://zaojiasys.jianshe99.com/cecaopsys/
  10. 微信小程序笔记