作用域链的形成 在 JS 中每个函数都有自己的执行环境,而每个执行环境都有一个与之对应的变量对象。例如: 你就可以将 fn 当做函数 fn 执行环境对应的一个变量对象,这个变量对象我们通过代码是无法访问到的,但是 JS 引擎在解析代码时会用到它。 思考为什么上面函数中的 fn 运行后输出 1,可能大 ...
分类:
Web程序 时间:
2020-05-02 00:11:40
阅读次数:
70
之前写过一篇 <从作用域 链接属性 存储类型三个方面详解 static & extern关键字>, 此篇是对前篇的提炼, 并加了新的感悟. 最最常见的作用域有两种: 函数体内即花括号(包括函数定义中的形参)中声明的标识符和函数体外(不在任何花括号)中声明的标识符. 这两种常见的作用域标识符又各自对应 ...
分类:
其他好文 时间:
2020-04-25 17:20:03
阅读次数:
61
在我们了解作用域链之前我们需要知道这几个概念: 函数的生命周期 变量和函数声明 Activetion Object (AO) , Variable Obect (VO) 函数的生命周期 创建阶段: js解析引擎会先进行预解析,会将函数声明提前,同时将函数放到全局作用域中 或者 当前函数的上一级函数作 ...
分类:
其他好文 时间:
2020-04-24 00:54:08
阅读次数:
63
持续记录… 1.内存泄露 由于 IE9 之前的版本对 JScript 对象和 COM 对象使用不同的垃圾收集例程因此闭包在 IE 的这些版本中会导致一些特殊的问题。具体来说,如果闭包的作用域链中保存着一个HTML 元素,那么就意味着该元素将无法被销毁。来看下面的例子。 function assign ...
分类:
其他好文 时间:
2020-04-21 18:36:40
阅读次数:
65
函数的prototype 1.函数的prototype属性 *每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为原型对 象) * 原型对象中都有一个属性constructor,它指向函数对象。 2.给原型对象添加属性(一般是方法) * 作用: 函数的所有实例对象自动拥有 ...
分类:
Web程序 时间:
2020-04-19 19:37:50
阅读次数:
93
首先: 了解闭包,必须要清楚 JavaScript 的特性 > 作用域 和 作用域链。 闭包的构成。 闭包性能考量。 官方对于闭包的定义: 闭包 是指 有权访问另外一个函数作用域中的变量的函数 关键在于下面两点: 是一个函数 能访问另外一个函数作用域中的变量 另外的说法: 闭包可以延长(函数作用域下 ...
分类:
编程语言 时间:
2020-04-17 16:02:56
阅读次数:
88
let与const 新增加了两个重要的 关键字: 和`const`。 块级作用域 代码块内如果存在 或者 ,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。 是保存函数作用域链的对象,是函数的内部属性无法直接访问, 中可以看到出现了一个 块级作用域,这使得 特别适合在 中使用,在 引入 ...
分类:
其他好文 时间:
2020-04-11 12:46:02
阅读次数:
53
函数(声明,调用) 1.命名函数 2.匿名函数 全局变量 局部变量 作用域 作用域链 对象 (属性,方法) 创建对象方法 1.系统内部构造函数,创建对象 2.自定义构造函数创建对象 3.字面量创建对象 4.推论出的工厂模式 内置对象:实例化对象 Array Math 自定义对象:不需要实例化 浏览器 ...
分类:
Web程序 时间:
2020-03-29 10:51:01
阅读次数:
67
我们在前几章说this永远指向最后调用它的那个对象。 但对于箭头函数来说不是的,它里面的this是由外层作用域来决定的,且指向函数定义时的this而非执行时。 它里面的this是由外层作用域来决定的怎么理解呢?首先箭头函数中没有 this 绑定,必须通过查找作用域链来决定其值,如果箭头函数被非箭头函 ...
分类:
其他好文 时间:
2020-03-22 14:14:28
阅读次数:
64
下文根据汤姆大叔的深入javascript系列文章删改,如果想深入理解请阅读汤姆大叔的系列文章。http://www.cnblogs.com/TomXu/... 变量对象 初步介绍 变量对象(缩写为VO)是一个与执行上下文相关的特殊对象,它存储着在上下文中声明的以下内容: 变量 (var, 变量声明 ...
分类:
其他好文 时间:
2020-03-21 09:34:19
阅读次数:
43