高性能JavaScript

Posted MJ_MY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能JavaScript相关的知识,希望对你有一定的参考价值。

第二章 (数据存取)

一.四种基本的数据存取位置

(1)字面量

  字面量只代表自身,不存储在特定的位置。javascript中的字面量有:String,Number,Boolean,Object,Array,Function,Regex,null,nudefined值。

(2)本地变量

  使用关键字定义变量。例:var定义的数据存储单元。

(3)数组元素

  存储在javaScript数组对象内部,以数字作为索引。

(4)对象成员

  存储在javaScript对象内部,以字符串作为索引。

二.管理作用域

  1.作用域链

function add(){

 //创建add函数过程中,它就产生了内部作用域,然后它的作用域链中也插入了一个对象变量,这个全局对象代表着所有在全局范围内定义的变量,该全局对象包含了window,docunment,等。
 
}

  然后在执行add这个函数时,会产生一个称为执行上下文(执行环境)的内部对象。
  每次执行add函数都会创建一个独一无二的执行环境,所以多次调用一个函数就会导致创建多个执行环境,当函数执行完毕,执行环境也随之销毁。
  每个执行环境都有自己的作用域链,用于解析标识符。

 2.标识符解析的性能
   (1)解析标识符是有代价的,一个标识符所在的位置越深那么解析的速度则越慢。因此函数中局部变量的读写总是最快的,而读写全局变量通常是最慢的。
function add (){

     var a = document.body;
     var b = document.getElementId(‘id‘);
     var c = document.getElementId(‘abc‘);

}

//该函数引用了三次document,而document是全局对象,搜索该对象的过程必须要遍历整个作用域链,直到最后在全局变量对象中找到。

    (2)优化:

function add (){
    var doc = doucment;
     var a = doc .body;
     var b = doc .getElementId(‘id‘);
     var c = doc .getElementId(‘abc‘);

}

//先将一个全局变量的引用储存在一个局部变量中, 然后使用整个局部变量替代全局变量doucment。所以执行时只执行一次搜索全局变量的过程。

 

 

以上是关于高性能JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript性能优化5——JSBench工具的使用

JavaScript性能优化5——JSBench工具的使用

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

30秒就能看懂的JavaScript 代码片段

常用Javascript代码片段集锦