![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
js机制
文章平均质量分 95
js执行机制
foreverzwl
这个作者很懒,什么都没留下…
展开
-
js编译、执行上下文、作用域链
在函数对象被创建时,将所在的词法环境记录到[[Environment]],借此在函数被调用进而创建词法环境时,将[[Environment]]的值赋给outer,使得词法环境的outer指向外部词法环境,由此形成链式结构,这就是ES6之后的作用域链。从词法环境角度来说,闭包是函数和声明该函数的词法环境的组合。,函数执行上下文的词法环境中,outer记录了外部词法环境的引用,而外部词法环境中的outer又记录了对其自身的外部词法环境的引用,由此形成了一个链式结构,这就是ES5.1规范中的作用域链。原创 2023-05-12 14:51:27 · 816 阅读 · 0 评论 -
js代码执行过程、调用栈、执行上下文
针对变量提升来说,我们知道在编译阶段会将变量、函数提升并存放于执行上下文的变量环境对象中,在执行阶段通过在调用栈管理的一个个上下文环境的变量环境对象中查找目标变量/函数。当函数执行时,会将函数最外层通过let、const声明的变量,并且不处于块级作用域内的变量,进行变量提升,初始化为undefined,然后压入栈底。在编译阶段,javascript引擎将变量的声明部分和函数的声明部分提升到代码开头,并且给被提升的变量设置默认值:undefined,同时这些被提升的变量将被放入到变量环境对象中。原创 2023-05-12 14:32:55 · 1334 阅读 · 0 评论