时间:2020-11-17 来源:未知 分类:前端笔记 阅读:
优点:解决循环引用不能回收的问题 缺点:空间碎片化,不能让空间得到最大化的使用
TimeLine记录内存
将使用中无法避免的全局变量缓存到局部
外部具有指向内部的引用 在"外"部作用域访问"内"部作用的数据
闭包是一种强大的语法 闭包使用不当很容易出现内存泄漏
function foo() {
var el = document.getElementById('btn');
el.click = function () {
el.onclick = function () {
console.log(el.id)
}
}
el = null;
}
foo();
function Person() {
this.nama = 'icoder'
this.age = 18
this.getAge = function () {
return this.age
}
}
const p1 = new Person()
const a = p1.getAge;
// 效率高
function Person() {
this.nama = 'icoder'
this.age = 18
}
const p2 = new Person();
const b = p2.age;
var aBtns = document.getElementsByClassName('btn')
for (var i = 0; i < aBtns.length; i++) {
console.log(i)
}
// 效率高
for (var i = 0, len = aBtns.length; i < len; i++) {
console.log(i);
}
var arrList = new Array(1, 2, 3, 4, 5);
// 效率最高
arrList.forEach((item => {
console.log(item);
}))
// 其次
for (let i = 0; i < arrList.length;i++) {
console.log(i);
}
// 最差
for (let item in arrList) {
console.log(arrList[item]);
}
节点的添加操作必然会有回流和重绘
for (let i = 0; i < 10; i++) {
let oP = document.createElement('p');
oP.innerHTML = i;
document.body.appendChild(oP);
}
// 效率高
const fragEle = document.createDocumentFragment;
for (let i = 0; i < 10; i++) {
let oP = document.createElement('p');
oP.innerHTML = i;
fragEle.appendChild(oP);
}
document.body.appendChild(fragEle)
for (let i = 0; i < 3; i++) {
let oP = document.createElement('p');
oP.innerHTML = i;
document.body.appendChild(oP);
}
// 效率高
const oldP = document.getElementById('box1');;
for (let i = 0; i < 3; i++) {
let newP = oldP.cloneNode(false);
newP.innerHTML = i;
document.body.appendChild(newP);
}
var a1 = new Array(3);
a1[0] = 1;
a1[1] = 2;
a1[3] = 3;
a1[4] = 4;
// 效率高
var a = [1, 2, 3];
橙子,热爱前端,关注前端,4年的前端工作经验,熟练掌握前端各项技能,熟练多种前端框架,希望遇到志同道合的前端朋友们,一起学习交流,共同进步!