执行上下文
解答:执行上下文,我们可以当成是当前代码运行环境 或者是 作用域. 例如:
这里面有 4个执行上下文. 一个全局上下文. 3个函数上下文.
不管什么情况下,只有一个全局的上下文.该上下文 能被任何其他的上下文访问到.
至于函数上下文的个数是没有任何限制的,每到调用执行一个函数时,引擎就会自动新建出一个函数上下文,换句话说,就是新建一个局部作用域,可以在该局部作用域中声明私有变量等,在外部的上下文中是无法直接访问到该局部作用域内的元素的。
为什么说 函数上下文可以调用 全局上下文, 而全局的不能调用 函数上下文?
答:这个要从 执行上下文 的堆栈说起: 默认最先进 的 是全局上下文,然后 函数被调用,就会创建 新的执行上下文. 然后进栈.并且压到 执行上下文堆栈的顶部.浏览器总是 执行堆栈顶部的上下文. 一旦执行完毕,该上下文就会从堆栈顶部弹出.然后执行下面的上下文.直到全局上下文 .所以 当执行 全局上下文的时候是不能 调用函数的上下文的.(某一时刻只有唯一的一个事件是被激活处理的).