JavaScript 作用域和作用域链

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 作用域和作用域链相关的知识,希望对你有一定的参考价值。

作用域

作用域指的是变量的适用范围 

 

全局作用域

不在任何函数内定义的变量就具有全局作用域

 

局部作用域

在函数内部定义的变量具有局部作用域

var bo=54
function eb(){
  alert(bo)
}
eb()

解:变量bo就处于全局作用域中,能被eb()所访问

 

作用域链

每个变量都有作用域,当你尝试访问一个变量的时候,它会从当前作用域开始向上查找,直到全局作用域,这个查找的路径就可以说是作用域链

<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
window.onload=function(){
  for(var i=1;i<4;i++){
    document.getElementsByTagName("h"+i)[0].onclick=function(){
      alert(i)
    }
  }
}
</script>
<h1>标题一</h1>
<h2>标题二</h2>
<h3>标题三</h3>
</body>
</html>

解:这个是一个for循环取i的问题,那么进行分析,当页面加载的时候进行for循环,给h1,h2,h3分别绑定了一个点击事件,当点击h2标签时,执行匿名函数,匿名函数尝试访问变量i,在当前作用域查找i未果,向上一级作用域访问,找到了变量i,变量i因为for循环,i=3,所以alert(3)。 这就是作用域链的作用

 

















以上是关于JavaScript 作用域和作用域链的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript作用域和作用域链

JavaScript作用域和作用域链

JavaScript高级JavaScript的运行原理:V8引擎,JS代码执行原理,作用域和作用域链面试题

JavaScript 开发进阶:理解 JavaScript 作用域和作用域链

javascript数据类型--- 函数对象之作用域和作用域链

JavaScript 开发进阶:理解 JavaScript 作用域和作用域链