发布网友 发布时间:2022-04-22 03:21
共1个回答
热心网友 时间:2022-04-22 11:36
JavaScript中所有的量都是存在于某一个作用域中的
除了全局作用域, 每一个作用域都是存在於某个作用域中的
在试图访问一个变量时JS引擎会从当前作用域开始向上查找直到Global全局作用域停止
例如
var A;//全局作用域当alert(A)时, JS引擎沿着D的作用域, B的作用域, 全局作用域的顺序进行查找.
这三个作用域组成的有序集合就成为作用域链
至于为什么叫链, 你可以理解和链表有相似之处, 深层的作用域会能够访问到上层作用域, 就如同链表中两个连续节点能够单向访问一样
追问哦,还有一个问题,就是,创建函数会产生新的执行环境,那创建对象呢是不是也会创建一个新的执行环境?追答这得看你怎麽定义执行环境了
如果你只关注JS运行环境的话那麽只有调用函数能产生新的域, 而其中如果调用了内置函数, 比如Object(), 那麽就是解释引擎的底层调用了, 这里就不会产生JS作用域
如果你同时关注引擎级的话, 那麽得具体分引擎分情况来判断