/**
高效 Javascript 编码
Fast Loops
循环是大多数脚本最基本的一个部分,在大多数情况下,循环不会有任何效率问题。
但是,通过优化循环条件,还是可以让循环运行的更快一些
看下面的几个例子
*/
for(var i = 0 ; i < document.getElementsByTagName('tr').length ; i++){
document.getElementsByTagName('tr')[i].className = "newclass";
document.getElementsByTagName('tr')[i].style.color = "red";
...
}
var rows = document.getElementsByTagName("tr");
for(var i = 0 ; i < rows.length ; i++){
rows[i].className = "newclass";
rows[i].style.color = "red";
...
}
/*
上面两个都不是高效的,getElementsByTagName返回一个动态的对象,而不是一个静态的数组。
每次循环的时候,解析器都会再次检查对象,并且需要重新计算出有多少对象被引用。
下面是一种好一些的方式来进行这种循环(下面的第一种通常是最好的方式)
*/
/**
这种写法稍微有点不太好理解
这种方式的理解需要彻底的了解for循环
for循环有两个分号,等于说可以传3个参数
第一段实际上就是用来定义变量的
第二段实际上就是传入一个表达式
第三段一般传入的递增或者递减
我们需要仔细分析的第二段
只要是个表达式
我们平常使用的是i>1 , i< 100之类的
仔细看下,这种东西实际上返回的不是false就是true
所以,我们在这个地方传入的是false或者true的boolean值就行了
而这段代码里面传入的是
row = rows[i]
实际上判断boolean值的就是row这个变量
只要变量row转换为boolean的时候为true就继续进行循环
而rows[i]的i超过一定大小之后rows[i]就是null
那么row也是null,null转换为boolean值的时候就是==false
所以会停止循环,也就是循环判断终止的条件
*/
var rows = document.getElementsByTagName("tr");
for(var i = 0 , row;row = rows[i];i++){
row.className = 'newclass';
row.style.color = 'color';
...
}
var rows = document.getElementsByTagName("tr");
for(var i = rows.length - 1; i > -1;i--){
var row = rows[i];
row.className = 'newclass';
row.style.color = 'color';
...
}
/*这下面这一种是我们经常能看到的,虽然做了变量缓存,但是增加了一个不必要的变量m,增加了内存的使用量*/
var rows = document.getElementsByTagName("tr");
for(var i = 0 , m = rows.length; i < m;i++){
var row = rows[i];
row.className = 'newclass';
row.style.color = 'color';
...
}
/*
Reduce reflow
每次我们添加一个元素到document中,浏览器必须重新reflow整个page,所有的元素都会被重新设置位置和渲染
你添加的元素次数越多,reflow的次数也就越多。
所以应该减少reflow的次数,这样页面的展现也就越快。
如果你需要添加一个新元素,并且这个元素有很多子节点。
应该先将子元素添加到新元素上面,然后才将新元素append到页面上
这样只需要一次的reflow
但是有一种情况
就是你添加一个节点,并且需要给他新加一些相邻节点
这种情况下可以新建一个fragment,然后将这些节点加入到fragment上面
最后将fragment添加到document中。
*/
/*
Assign multiple styles
我们通过js来修改元素的style的时候
经常会这么写
*/
oElement.style.position = "absolute";
oElement.style.top = "0px";
oElement.style.left = "0px";
...etc...
/*再看另外一种写法*/
oElement.setAttribute("style","position:absolute;top:0px;left:0px;...etc...");
/*这种方式也可以将reflow的次数降低到一次*/
分享到:
相关推荐
高效javascript,高效javascript,高效javascript
"高效JS树"着重于利用JavaScript实现性能优化的树数据结构,特别是在处理大规模数据时,如何确保操作的高效性和用户体验的流畅性。下面我们将深入探讨这个主题。 1. **树数据结构基础** - 树是由节点(Node)组成...
CoffeeScript这一门编程语言构建在JavaScript之上,其被编译成高效的JavaScript,这样你就可以在web浏览器上运行它,或是通过诸如用于服务器端应用的Node.js一类的技术来使用它。编译过程通常都很简单,产生出来的...
JAVASCRIPT高效图形编程JAVASCRIPT高效图形编程JAVASCRIPT高效图形编程JAVASCRIPT高效图形编程JAVASCRIPT高效图形编程JAVASCRIPT高效图形编程
在浏览器和Node.js上, Auditor都使您放心编写高效JavaScript代码。 除了优雅地添加标准JavaScript代码外,Auditor还具有对React,Jest和TypeScript的一流支持。 请参阅有关用法的。 安装 npm install --save-dev ...
JAVASCRIPT高效图形编程_.pdf
`pareto.js` 是这样一个小型、直观且高效的JavaScript库,它集合了一系列实用工具类,旨在简化开发者的工作流程,提高代码的可读性和执行效率。 **库的特性** 1. **小巧轻便**:`pareto.js` 的大小极小,这使得它...
【前端开源库-tpjs】是一个致力于提供简洁、高效JavaScript模板引擎的开源项目。它以易用性为核心,旨在帮助开发者快速构建动态HTML页面,提高前端开发效率。TPJS这个名字中的"TP"可能是"Template Pulley"的缩写,...
JavaScript高效图形编程(中),原书中文版本
Eclipse作为一个强大的开源集成开发环境(IDE),广泛用于Java编程,但...使用Eclipse的JavaScript插件JSEditor,意味着你可以在一个专业且功能全面的环境中编写和调试JavaScript代码,享受到高效且便捷的开发体验。
《JavaScript高效图形编程》是一本具有很强实操性的JavaScript图书,全书共分10章,涵盖的主要内容有:JavaScript的面向对象机制、JavaScript性能优化、jQuery和ExtJS库、高级UI设计、Web游戏开发、面向移动设备的...
"JSEditor"就是这样一个专门为Eclipse设计的JavaScript开发插件,它旨在提供更高效、功能丰富的JavaScript代码编写环境。 JSEditor插件主要包含以下几个关键功能和特点: 1. **语法高亮**:JSEditor提供了对...
jsfft, 小型高效的Javascript FFT实现 jsfft用于 node 或者浏览器的小型。高效的Javascript实现。用法JSFFT附带的可以运行于以下位置:const fft = require('jsfft');// Use the in-place ma
《如何高效使用JS》是一本关于JavaScript高效使用和性能优化的参考书籍,作者是Nicholas C. Zakas。这本书深入探讨了提高JavaScript代码执行效率的方法,并介绍了多种在网页中加载和执行JavaScript脚本的最佳实践。...
javascript图像、动画技术,小游戏示例代码,html5画布,phonegap
描述:“高性能javascript中英文对照版,希望能对广大js爱好者有进阶类的帮助。” 知识点: 1. JavaScript性能优化的重要性:文件提到高性能JavaScript对于开发者而言是极其重要的,因为它关乎到浏览器端的用户体验...
这款插件专为Eclipse设计,旨在提供一个高效、便捷的JavaScript开发环境。jsEditor的特点包括代码高亮、自动完成、语法检查、错误提示等功能,这些功能极大地提高了编码效率。它还支持JQuery、AngularJS等流行的...
【前端开源库-broccoli-optimize-js】是一个用于前端开发的高效JS优化工具,它源自于前端构建系统Broccoli。Broccoli是一个快速、简洁且可扩展的构建工具,旨在为JavaScript开发者提供一种高效的构建流程,尤其适用...