基本点

本文介绍了JavaScript中的执行环境概念,包括全局与函数执行环境、作用域链等,并详细解析了垃圾收集机制中的两种主要方式:标记清除和引用计数。

淘宝的样式初始化:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }

a { text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
sub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; }
table { border-collapse:collapse; border-spacing:0; }

 

检测引用类型的值的数据类型的方法

instanceof

var person = {}

person instanceof Object        // true

 

执行环境:

每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个变量对象中。

web浏览器中, 全局执行环境被认为是window对象,所有全局变量和函数都是作为window的属性和方法创建的,某个执行环境中的代码被执行完毕之后,该环境被销毁,保存在其中的变量的函数也随之被销毁。

 每个函数都有自己的执行环境, 当执行流进入一个函数的时候,函数的环境就会被推进一个环境栈中,函数执行之后,栈将环境弹出,把控制权返回给之前的执行环境。

 

作用域链: 保证对执行环境有权访问的所有变量和函数的有序访问。

内部环境可以通过作用域链访问所有外部环境,外部环境不能访问内部环境的任何变量和函数。

 

延长作用域链: try-catch  with

 

声明变量: 使用var声明的变量会自动添加到最接近的环境中。如果初始化变量的时没有使用var声明,该变量会自动被添加到全局变量中。

 垃圾收集:js具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。

方式一:标记清除,最常用的垃圾收集方式,当变量进入环境时,将变量标记为进入环境,当变量离开环境时将其标记为离开环境。

               垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记,然后去掉环境中以及被环境中变量引用的变量的标记,在此之后再被加上标记的变量则被      视为将被删除的变量。原因是环境中的变量已经无法访问到这些变量了,最后垃圾收集器完成清除工作,删除带标记的值并回收它们的内存空间。

 

方式二:引用计数,跟踪记录每个值被引用的次数,当声明了一个变量并将一个引用类型的值赋给该变量时,则这个值的引用次数是1,如果将同一个值又赋给另外一个      变量,则引用次数为2。相反,如果包含对这个值引用的变量取得了另外一个值,则引用次数减1,。当引用次数值为0时,则说明没有办法再访问这个值了,因 此可以将其占用的内存空间回收回来。当垃圾收集器下次运行的时候,就会释放引用次数为0的值的所占用的内存。

 

管理内存: 确保占用最少的内存可以让页面获得更好的性能。而优化内存占用的最佳方式,执行中的代码只保存必要的数据。一旦数据不再有用,最好通过将其设置为null来释放其引用——这个做法叫解除引用(适用于全局变量和全局对象的属性)

 

转载于:https://www.cnblogs.com/coco-bear/p/8205575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值