上下文一次改为区域,是不是就容易理解一点。
不然总要想上下文到底是什么?
图 4-3 中的矩形表示不同的上下文。内部上下文可以通过作用域链访问外部上下文中的一切,但外 部上下文无法访问内部上下文中的任何东西。上下文之间的连接是线性的、有序的。每个上下文都可以 到上一级上下文中去搜索变量和函数,但任何上下文都不能到下一级上下文中去搜索。swapColors() 局部上下文的作用域链中有 3 个对象:swapColors()的变量对象、changeColor()的变量对象和全局 8 变量对象。swapColors()的局部上下文首先从自己的变量对象开始搜索变量和函数,搜不到就去搜索 上一级变量对象。changeColor()上下文的作用域链中只有 2 个对象:它自己的变量对象和全局变量 对象。因此,它不能访问 swapColors()的上下文。
例如:把上下文改为区域,就没这么难以理解了
图 4-3 中的矩形表示不同的区域。内部区域可以通过作用域链访问外部区域中的一切,但外 部区域无法访问内部区域中的任何东西。区域之间的连接是线性的、有序的。每个区域都可以 到上一级区域中去搜索变量和函数,但任何区域都不能到下一级区域中去搜索。swapColors() 局部区域的作用域链中有 3 个对象:swapColors()的变量对象、changeColor()的变量对象和全局 8 变量对象。swapColors()的局部区域首先从自己的变量对象开始搜索变量和函数,搜不到就去搜索 上一级变量对象。changeColor()区域的作用域链中只有 2 个对象:它自己的变量对象和全局变量 对象。因此,它不能访问 swapColors()的区域。