如何提升JavaScript执行效率与性能在前端开发中位于一个很重要的地方,这节来研究下如何在平时做项目过程中,提升JavaScript性能与运行效率。 循环 循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的性能应该说基本(平时使用时)等价。 而事实上...
Js的阻塞性 Javascript 在浏览器中的性能问题,可能是最重要的可用性问题 Js的阻塞性 浏览器用单一进程来处理UI进程和Js的执行 不管是内嵌的还是外链的,下载并立即执行 因为它有可能会修改页面 页面生存周期的概念 瀑布图中看到了下载时间和executing time 在head中加入script 和link body加载到前不会输出任何东西,因此会看到空白页面 代码如下: document.write("The date is" + (new Date().toDateString())); 页面在到scr...
JavaScript 是一个比较完善的前端开发语言,在现今的 web 开发中应用非常广泛,尤其是对 Web 2.0 的应用。随着 Web 2.0 越来越流行的今天,我们会发现:在我们的 web 应用项目中,会有大量的 JavaScript 代码,并且以后会越来越多。JavaScript 作为一个解释执行的语言,以及它的单线程机制,决定了性能问题是 JavaScript 的软肋,也是 web 软件工程师们在写 JavaScript 需要高度重视的一个问题,尤其是针对 Web 2.0 的应用。绝大多...
在写完第一回之后,看到了朋友们的回复,指出了我代码中的一些问题,确实由于时间仓促没有使用IDE,直接搞上了,又由于本人记忆力不好,所以把大小写都忘记了,还好晚上回家,用VS改了一下,呵呵,真是对不住大家了。 从这一讲开始,我们将直正接触一个JQ类库,学习一下JQ的写法,JQ的一些常用的命令等等,今天主要讲的是JQ里的选择器,这也是JQ的一大特点,这从它的名称jQuery中可以看到,主要功力体现在查询上。 前言:对于写在输...
问题缘由:负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术。在目前java加密很容易破解的情况下,还是先搞定js的加密和压缩,一方面可以提高页面加载性能,另外一方面也希望辛苦研发出来的成果得到一定的保护。 研究过程: 1、先强烈鄙视一下哪些随便转载文章的家伙,给我制造了很大的麻烦!!网上很多帖子都不靠谱。。 2、首先想了解jquery使用什么压缩的, 网上找了半天,说...
jQuery性能优化28条建议 一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来。我也做了一个jQuery性能优化的简明样式表,你可以打印出来或者设为桌面背景。 一、选择器性能优化建议 1. 总是从#id选择器来继承 这是jQuery选择器的一条黄金法则。jQuery选择一个元素最快的方法就是用ID来选择了。 代码如下: $(#content).hide(); 或者...
昨天参加的一个前端面试,其中有一题数组去重,首先想到的是对象存键值的方法,代码如下 方法一:(简单存键值) 代码如下: Array.prototype.distinct1 = function() { var i=0,tmp={},that=this.slice(0) this.length=0; for(;i<that.length;i++){ if(!(that[i] in tmp)){ this[this.length]=that[i]; tmp[that[i]]=true; } } return this; }; 上面的方法不复杂,思路也简单,可是遇到不同类型又能转换成同样的字符串的就完了,...
代码如下: repaint(重绘) ,repaint发生更改时,元素的外观被改变,且在没有改变布局的情况下发生,如改变outline,visibility,background color,不会影响到dom结构渲染。 reflow(渲染),与repaint区别就是他会影响到dom的结构渲染,同时他会触发repaint,他会改变他本身与所有父辈元素(祖先),这种开销是非常昂贵的,导致性能下降是必然的,页面元素越多效果越明显。 何时发生:. DOM元素的添加、修改(内容)、删除( Reflow + Re...
而JavaScript的核心是ECMAScript 。与其他语言类似,ECMAScript 的字符串是不可变的,即它们的值不能改变。 请考虑下面的代码: 代码如下:var str = "hello ";str += "world";实际上,这段代码在幕后执行的步骤如下:1.创建存储 "hello " 的字符串。2.创建存储 "world" 的字符串。3.创建存储连接结果的字符串。4.把 str 的当前内容复制到结果中。5.把 "world" 复制到结果中。6.更新 str,使它指向结果。 每次完成字符串连接都会执行...
最近在做一个性能优化方面的工作,遇到很多细节问题,现在一一把遇到的问题记录下来分享给大家,废话就不多谢,我直接贴代码。 代码如下: for与each性能比较 function getSelectLength() { var time1 = new Date().getTime(); var len = $("#select_test").find("option").length; var selectObj = $("#select_test"); for (var i = 0; i if (selectObj.get(0).options[i].text == "111111") { selectObj.get(0).options[i].s...
通过网上查找资料了解关于性能优化方面的内容,现简单整理,仅供大家在优化的过程中参考使用,如有什么问题请及时提出,再做出相应的补充修改。 一、 让代码简洁:一些简略的表达方式也会产生很好的优化 eg:x=x+1;在不影响功能的情况下可以简写为x++; 二、 变量名方法名尽量在不影响语意的情况下简单。(可以选择首字母命名) eg:定义数组的长度可以取名为:ArrLen而不需要取为ArrayLength。 三、 关于JS的循环,循环是一种常用的...
下面是一些关于客户端JS性能的一些优化的小技巧: 1. 关于JS的循环,循环是一种常用的流程控制。JS提供了三种循环:for(;;)、while()、for(in)。在这三种循环中 for(in)的效率最差,因为它需要查询Hash键,因此应尽量少用for(in)循环,for(;;)、while()循环的性能基本持平。当然,推荐使用for循环,如果循环变量递增或递减,不要单独对循环变量赋值,而应该使用嵌套的++或--运算符。 2. 如果需要遍历数组,应该先缓存数组长度var l...
1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本。因为新版本会改进性能,还有很多新功能。 下面就来看看,不同版本的jQuery性能差异有多大。这里是三条最常见的jQuery选择语句: $(‘.elem) $(‘.elem, context) context.find(‘.elem) 我们用1.4.2、1.4.4、1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次。结果如下: 可以看到,1.6.2版本的运行次数,远远超过两个老版本。尤其是第一条语...
1. Append Outside of Loops 凡是触及到DOM都是有代价的。如果你向DOM当中附加大量的元素,你会想一次性将它们全部附加进来,而不是分多次进行。当在循环当中附加元素就会产生一个常见的问题。代码如下:$.each( myArray, function( i, item ) { var newListItem = "" + item + ""; $( "#ballers" ).append( newListItem );}); 一个常用的技巧是利用文档片段(document fragment)。在循环的每一次迭代当中,将元素附加到片段...
1、标签应越少越好(虽然有多个也不会导致程序报错),因为每个标签初始下载时都会阻塞页面渲染 2、标签尽量不要放在页面上方,尽量放在内的最下面,因为每个在执行的时候,都会下载对应的js文件,浏览器会等待所有js/css下载完成才显示出页面 3、当需要导入多个js文件的时候,一般情况下我们都是写两个,实际上是支持一次性导入多个的,例如: 4、标签中有一个属性:defer,该属性指明本元素所含的脚本不会修改DOM,因此代码能安全...