js作用域链是什么意思

发布网友 发布时间:2022-04-22 03:21

我来回答

1个回答

热心网友 时间:2022-04-22 11:36

JavaScript中所有的量都是存在于某一个作用域中的

除了全局作用域, 每一个作用域都是存在於某个作用域中的

在试图访问一个变量时JS引擎会从当前作用域开始向上查找直到Global全局作用域停止

例如

var A;//全局作用域
function B()
{
    var C;//C位于B函数的作用域
    function D()
    {
        var E;//E位于D函数的作用域
        alert(A)
    }
}


当alert(A)时, JS引擎沿着D的作用域, B的作用域, 全局作用域的顺序进行查找.

这三个作用域组成的有序集合就成为作用域链

至于为什么叫链, 你可以理解和链表有相似之处, 深层的作用域会能够访问到上层作用域, 就如同链表中两个连续节点能够单向访问一样

追问哦,还有一个问题,就是,创建函数会产生新的执行环境,那创建对象呢是不是也会创建一个新的执行环境?

追答这得看你怎麽定义执行环境了
如果你只关注JS运行环境的话那麽只有调用函数能产生新的域, 而其中如果调用了内置函数, 比如Object(), 那麽就是解释引擎的底层调用了, 这里就不会产生JS作用域
如果你同时关注引擎级的话, 那麽得具体分引擎分情况来判断

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com