作用域和作用域链 —javascript面向对象高级
Posted 唐小青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域和作用域链 —javascript面向对象高级相关的知识,希望对你有一定的参考价值。
# 作用域和作用域链 #
## 1.作用域 ##
定义:函数声明时,会确定当前函数的作用域,所谓作用域就是作用的范围(地盘)
全局作用域:
a. window是顶层对象,是一切函数,变量,对象的终点,
b. 所以在全局范围内定义的函数或变量,它都是属于window对象的属性或方法。
c. 其作用域范围是全局,任何地方均能调用。
局部作用域:
a. 函数声明时,函数内部的作用域就是局部作用域,
b. 在函数内部通过var 声明的变量 和 声明式的函数均是该函数的私有变量或函数,
c. 一般情况下,函数外部不能访问函数内部的私有变量或函数
作用域链:
a.函数内部调用某个变量的时候,会在当前作用域中查找该变量是否被声明
b.如果没有被声明,就会去其上一层作用域中查找
c.直到查找到全局作用域,如果还是没有,则为not define
作用域和执行上下文的关系:
var a = 10, b = 10;
function fn(x){
var a = 100,c = 200;
function bar(x){
var a = 1000,d = 4000;
}
bar(100)
bar(200)
}
fn(10)
全局作用域 : 上下文环境内保存 a = 10,b = 10
fn作用域 : 上下文环境内保存 a = 100,x = 10 ,c = 200
bar作用域:上下文环境内保存 a = 1000,d =4000,x = 100(第一次调用) 200(第二次调用)
以上是关于作用域和作用域链 —javascript面向对象高级的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中作用域和作用域链的简单理解(变量提升)
JavaScript中作用域和作用域链的简单理解(变量提升)
JavaScript 开发进阶:理解 JavaScript 作用域和作用域链