码迷,mamicode.com
首页 > 编程语言 > 详细

高性能JavaScript

时间:2019-03-15 17:30:09      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:作用域   bsp   get   back   col   round   本地变量   读写   作用   

第二章 (数据存取)

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

(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

标签:作用域   bsp   get   back   col   round   本地变量   读写   作用   

原文地址:https://www.cnblogs.com/MJ-MY/p/10538241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!