问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js代码的JS代码在优化中:

发布网友 发布时间:2022-04-29 01:41

我来回答

2个回答

热心网友 时间:2022-04-22 11:57

一、 让代码简洁:一些简略的表达方式也会产生很好的优化
eg:x=x+1;在不影响功能的情况下可以简写为x++;
二、 变量名方法名尽量在不影响语意的情况下简单。(可以选择首字母命名)
eg:定义数组的长度可以取名为:ArrLen而不需要取为ArrayLength。
三、 关于JS的循环,循环是一种常用的流程控制。
JS提供了三种循环:for(;;)、while()、for(in)。在这三种循环中for(in)的效率最差,因为它需要查询Hash键,因此应尽量少用for(in)循环,for(;;)、while()循环的性能基本持平。当然,推荐使用for循环,如果循环变量递增或递减,不要单独对循环变量赋值,而应该使用嵌套的++或–运算符。
四、 如果需要遍历数组,应该先缓存数组长度,将数组长度放入局部变量中,避免多次查询数组长度。
因为我们常常要根据字符串、数组的长度进行循环,而通常这个长度是不变的,比如每次查询a.length,就要额外进行一个操作,而预先把var len=a.length,则就少了一次查询。
五、 尽量选用局部变量而不是全局变量。
局部变量的访问速度要比全局变量的访问速度更快,因为全局变量其实是window对象的成员,而局部变量是放在函数的栈里的。
六、 尽量少使用eval。
每次使用eval需要消耗大量时间,这时候使用JS所支持的闭包可以实现函数模板。
七、 减少对象查找
因为JavaScript的解释性,所以a.b.c.d.e,需要进行至少4次查询操作,先检查a再检查a中的b,再检查b中的c,如此往下。所以如果这样的表达式重复出现,只要可能,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。
八、 字符串连接。
如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。
如果要连接多个字符串,应该少使用+=,如s+=a;s+=b;s+=c;应该写成s+=a + b + c;
而如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存。怎么用呢?使用JavaScript数组来收集,最后使用join方法连接起来,如下
var buf = new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join("");
九、 类型转换
1. 把数字转换成字符串,应用"" + 1,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:("" +) > String() > .toString() > new String()
尽量使用编译时就能使用的内部操作要比运行时使用的用户操作要快。
String()属于内部函数,所以速度很快,而.toString()要查询原型中的函数,所以速度逊色一些,new String()用于返回一个精确的副本。
2. 浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用的时间,速度是最快的。
3. 对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高
十、 尽量作用JSON格式来创建对象,而不是var obj=new Object()方法。
因为前者是直接复制,而后者需要调用构造器,因而前者的性能更好。
十一、 当需要使用数组时,也尽量使用JSON格式的语法,
使用JSON格式的语法即直接使用如下语法定义数组:[parrm,param,param...],而不是采用new Array(parrm,param,param...)这种语法。因为使用JSON格式的语法是引擎直接解释的。而后者则需要调用Array的构造器。
十二、 对字符串进行循环操作,例如替换、查找,就使用正则表达式。
因为JS的循环速度比较慢,而正则表达式的操作是用C写成的API,性能比较好。
十三、 插入HTML
很多人喜欢在JavaScript中使用document.write来给页面生成内容。事实上这样的效率较低,如果需要直接插入HTML,可以找一个容器元素,比如指定一个div或者span,并设置他们的innerHTML来将自己的HTML代码插入到页面中。
十四、 对象查询
使用[“”]查询要比.items()更快
十五、 定时器
如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。
十六、 尽量减少DOM调用
在Web开发中,JavaScript的一个很重要的作用就是对DOM进行操作。可是对DOM的操作是非常昂贵的,因为这会导致浏览器执行回流 (reflow)操作。我们应该尽可能的减少DOM操作。

热心网友 时间:2022-04-22 13:15

1.尽量减少JS代码的运用,减少统计代码数量,装的越多越会影响打开速度,每增加一个要慎之又慎。
2.网站的打开速度属于基础体验,如果打开速度很慢超过6秒了,那么网站在优化体验方面将会是很差的。(百度统计对于页面打开速度有个基础评分)
3.页面的打开速度几乎是起到致命作用的,对于代码真正决定取舍的人是SEO。
4.JS要放到网站的底部,先加载正文,再加载JS代码。
5.JS合并,减少JS加载次数。
6.JS代码减肥,工具:pagespeed,百度统计,启用GZIP压缩。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何写出优美的 JavaScript 代码 《超实用的JavaScript代码段》pdf下载在线阅读全文,求百度网盘云资源... js代码的介绍 怎样编辑JS代码 JS调用代码 做为一名前端开发人员,有哪些值得一读的JS代码 咨询一段js代码的功能 几个有趣的javascript代码,太神奇了 求个简单javascript代码 谢谢,网站菜单功能 写一段javascript(或jQuery)代码实现以下功能? 如何更改华为手机aP地址 ap3030dn怎么进入设置界面 中通快递的价格是如何计算的? 大庆中通快递邮三斤东西到厦门大概多少钱 扭扭车要寄快递怎么寄从厦门集美到厦门翔安邮费多少 厦门到重庆中通快递怎么收费的? 中通速递运费如何计算 五十千克的东西走中通快递从厦门到恵安需要多少钱 销售员要用电话联系客户,总被被封号怎么办 我是电话销售,推销pos机,很多人听到要交20块钱押金就挂了认为是骗钱的。我该怎么说 开头的字母是w是什意思? W1743113661这个是吗? w 我的为啥解不了封啊 W微信密码忘了手机号换了。怎么登上原来的? w微信被封 辅助验证表示不符合 w微信没实名提到钱有风险吗 开头的字母是w是什意思? w15936671562是不是骗子? W1743113661这个是吗? w为什么别人找不到我的 w 我的为啥解不了封啊 W微信密码忘了手机号换了。怎么登上原来的? w15936671562是不是骗子? w为什么别人找不到我的 请问这位MM叫什么名字? 求这个女子的中文名 英文名是vanc 当今的时代可以说是一个网红时代用英文怎么说? 男生的艺名【适合文物双全那种,网红.名字还要有英文翻译,中英文都要有】 求一首很火的英文歌,听过很多次,*部分是啦啦啦啦啦阿妹莫拉,I say哦hi诶,啦啦啦啦啦阿妹莫拉..... 火山视频里泰国女网红唱的歌什么名,好像是英文歌曲