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的运行原理:V8引擎,JS代码执行原理,作用域和作用域链面试题
JavaScript 开发进阶:理解 JavaScript 作用域和作用域链