标签:作用域 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。所以执行时只执行一次搜索全局变量的过程。
标签:作用域 bsp get back col round 本地变量 读写 作用
原文地址:https://www.cnblogs.com/MJ-MY/p/10538241.html