以图明志

JavaScript

如何在数据访问层上提高js的执行效率

标识符解析、作用域链、运行期上下文、原型链、闭包
本文讲到的是如何从数据访问层面上提高JS 代码的执行效率。总的来讲有以下几条原则:函数中读写局部变量总是最快的,而全局变量的读取则是最慢的;尽可能地少用with 语句,因为它会增加with 语句以外的数据的访问代价;闭包尽管强大,但不可滥用,否则会影响到执行速度以及内存;嵌套的对象成员会明显影响性能,尽量少用;

JavaScript

[专题] JavaScript作用域链其三:作用域链特征

作用域链相关的一些重要特征
让我们看看与作用域链和函数[[scope]]属性相关的一些重要特征。在ECMAScript中,闭包与函数的[[scope]]直接相关,正如我们提到的那样,[[scope]]在函数创建时被存储,与函数共存亡。实际上,闭包是函数代码和其[[scope]]的结合。因此,作为其对象之一,[[Scope]]包括在函数内创建的词法作用域(父变量对象)。

JavaScript

[专题] JavaScript作用域链其二:函数的生命周期

分为创建和激活阶段
函数的的生命周期分为创建和激活阶段(调用时),让我们详细研究它。众所周知,在进入上下文时函数声明放到变量/活动(VO/AO)对象中。让我们看看在全局上下文中的变量和函数声明(这里变量对象是全局对象自身,我们还记得,是吧?)

JavaScript

[专题] JavaScript作用域链其一:作用域链定义

内部上下文所有变量对象的列表
一个执行上下文 的数据(变量、函数声明和函数的形参)作为属性存储在变量对象中。变量对象在每次进入上下文时创建,并填入初始值,值的更新出现在代码执行阶段。这一章专门讨论与执行上下文直接相关的更多细节,这次我们将提及一个议题——作用域链。如果要简要的描述并展示其重点,那么作用域链大多数与内部函数相关。

JavaScript

[专题] 执行上下文其二:作用域链 Scope Chains

作用域链的原理和原型链很类似
作用域链的原理和原型链很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层。标示符[Identifiers]可以理解为变量名称、函数声明和普通参数。例如,当一个函数在自身函数体内需要引用一个变量,但是这个变量并没有在函数内部声明(或者也不是某个参数名),那么这个变量就可以称为自由变量[free variable]。

JavaScript

[专题] JavaScript探秘:eval()是“魔鬼”

eval()可以干扰作用域链
如果你现在的代码中使用了eval(),记住该咒语“eval()是魔鬼”。此方法接受任意的字符串,并当作JavaScript代码来处理。当有问题的代码是事先知道的(不是运行时确定的),没有理由使用eval()。如果代码是在运行时动态生成,有一个更好的方式不使用eval而达到同样的目标。例如,用方括号表示法来访问动态属性会更好更简单。
1 / 1 首页 < Prev 1 Next > 尾页 页码: