登录
专栏 0 关注 5 篇文章
JavaScript进阶系列
JavaScript进阶系列
流星雨
关注专栏
推荐文章
举报
4 年前  /  流星雨

JavaScript进阶之闭包

ECMAScript中,闭包指的是:1.从理论角度:所有的函数。因为它们都在创建的时候就将上层上下文的数据保存起来了。哪怕是简单的全局变量也是如此,因为函数中访问全局变量就相当于是在访问自由变量,这个时候使用最外层的作用域。2.从实践角度:以下函数才算是闭包:(1)即使创建它的上下文已经销毁,它仍然存在(比如,内部函数从父函数中返回)(2)在代码中引用了自由变量分析让我们先写个例子,例子依然是来自《JavaScript权威指南》var scope = "global scope";functio

2 赞 0 评论
收藏
3 年前  /  流星雨

JavaScript进阶之执行上下文栈

JavaScript深入系列,讲解执行上下文栈的是如何执行的。顺序执行?如果要问到 JavaScript 代码执行顺序的话,想必写过 JavaScript 的开发者都会有个直观的印象,那就是顺序执行,毕竟:var foo = function () { console.log('foo1');}foo(); // foo1var foo = function () { console.log('foo2');}foo(); // foo2然而去看这段代码:function foo(

0 赞 0 评论
收藏
3 年前  /  流星雨

JavaScript进阶之变量对象

前言在《JavaScript进阶之执行上下文栈》中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。对于每个执行上下文,都有三个重要属性:变量对象(Variable object,VO)作用域链(Scope chain)this今天重点讲讲创建变量对象的过程。变量对象变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明。因为不同执行上下文下的变量对象稍有不同,所以我们来

0 赞 0 评论
收藏
3 年前  /  流星雨

JavaScript进阶之词法作用域和动态作用域

作用域作用域是指程序源代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。静态作用域与动态作用域因为 JavaScript 采用的是词法作用域,函数的作用域在函数定义的时候就决定了。而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。让我们认真看个例子就能明白之间的区别:var value = 1;function foo() { consol

0 赞 0 评论
收藏
3 年前  /  流星雨

JavaScript进阶之作用域链

前言在《JavaScript进阶之执行上下文栈》中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。对于每个执行上下文,都有三个重要属性:变量对象(Variable object,VO)作用域链(Scope chain)this今天重点讲讲作用域链。作用域链在《JavaScript进阶之变量对象》中讲到,当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的

0 赞 0 评论
收藏