We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
原理:找出不再使用的变量,然后释放其占用的内存(垃圾收集器周期性地执行) 垃圾回收 方法:
说明:
自我理解代码执行过程:将全局执行环境推入执行栈中,将所有var 变量和函数声明提升到其作用域的顶部,创建函数时,会创建一个预先包含全局变量对象的作用域链;然后从第一行代码开始顺序执行,所有函数都会当函数执行时,则将函数的执行环境推入栈中,并形成其作用域链,函数在声明时会形成一个包含全局对象的作用域链,当函数执行时,会将当前活动对象加入到作用域链中,对变量的查找都是沿着作用链进行查找的。
性能问题:垃圾收集器的执行间隔:IE6根据内存分配量运行,当内存量大时,一般整个程序所需要的内存量就很大,这样会造成垃圾收集器的频繁执行。IE7重写了之后采用的规则:触发垃圾收集的临界值动态变化。初始触发垃圾收集的临界值与IE6相同,若回收的内存分配量低于15%,则临界值加倍;若回收的内存分配量大于85%,则临界值保持不变。
V8内存回收 V8优化技术及注意事项
MDN文档 可以应用于整个脚本,或者单个函数
W3school HTML5中是<!DOCTYPE html> 如果在文档开始处没有文档类型声明,则默认 混杂模式。 混杂模式:不可取,宽松的向后兼容的方式显示。 标准模式:浏览器按 W3C 标准解析执行代码。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
垃圾回收
原理:找出不再使用的变量,然后释放其占用的内存(垃圾收集器周期性地执行)
垃圾回收
方法:
说明:
JS中分为全局执行环境和函数的执行环境,代码运行时,会先将全局执行环境压入栈中,然后当执行流进入函数时,会创建函数的执行环境和相应的作用域链。
每个函数都有自己的执行环境,对应着相应的作用域链。对变量的查找和赋值都沿着自己的作用域链向上查找。
创建函数时,会创建一个预先包含全局变量对象的作用域链;当执行函数时,会创建本地活动对象(包括arguments和局部变量),并将其推入作用域链前端。当执行函数时,对变量的查找会沿着作用域链向上搜索,直到作用域链的最顶端—全局变量对象。当函数执行完毕后,本地活动对象会在内存中销毁。而闭包中,当外层函数执行完毕后,外层函数的作用域链被销毁,但被闭包函数引用的活动对象还存在内存中。
不确定:任何函数(包括闭包函数)在执行完毕后,只能销毁本地活动对象,所以为了销毁闭包引用的活动对象,需要销毁闭包函数,即解除引用null。
将引用类型值赋给已声明的变量,引用计数加1,若该变量的值变为了其他,则引用计数值减1。当引用计数为0时,进行内存回收。
自我理解代码执行过程:将全局执行环境推入执行栈中,将所有var 变量和函数声明提升到其作用域的顶部,创建函数时,会创建一个预先包含全局变量对象的作用域链;然后从第一行代码开始顺序执行,所有函数都会当函数执行时,则将函数的执行环境推入栈中,并形成其作用域链,函数在声明时会形成一个包含全局对象的作用域链,当函数执行时,会将当前活动对象加入到作用域链中,对变量的查找都是沿着作用链进行查找的。
性能问题:垃圾收集器的执行间隔:IE6根据内存分配量运行,当内存量大时,一般整个程序所需要的内存量就很大,这样会造成垃圾收集器的频繁执行。IE7重写了之后采用的规则:触发垃圾收集的临界值动态变化。初始触发垃圾收集的临界值与IE6相同,若回收的内存分配量低于15%,则临界值加倍;若回收的内存分配量大于85%,则临界值保持不变。
google V8引擎
V8内存回收
V8优化技术及注意事项
严格模式 'use strict';
MDN文档
可以应用于整个脚本,或者单个函数
函数的参数不能有同名属性,否则报错
不能使用with语句
不能对只读属性赋值,否则报错
不能使用前缀0表示八进制数,否则报错
不能删除不可删除的属性,否则报错
不能删除变量delete prop,会报错,只能删除属性delete global[prop]
eval不会在它的外层作用域引入变量
eval和arguments不能被重新赋值
arguments不会自动反映函数参数的变化
不能使用arguments.callee
不能使用arguments.caller
禁止this指向全局对象
不能使用fn.caller和fn.arguments获取函数调用的堆栈
增加了保留字(比如protected、static和interface)
标准与混杂模式
W3school
HTML5中是<!DOCTYPE html>
如果在文档开始处没有文档类型声明,则默认 混杂模式。
混杂模式:不可取,宽松的向后兼容的方式显示。
标准模式:浏览器按 W3C 标准解析执行代码。
The text was updated successfully, but these errors were encountered: