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

javascript的性能优化有哪些

发布网友 发布时间:2022-05-06 12:44

我来回答

1个回答

热心网友 时间:2022-05-15 15:38

类型转换 类型转换是大家常犯的错误,因为JavaScript是动态类型语言,你不能指定变量的类型。 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,所以直接调用这个方法效率会更高 使用直接量 其实这个影响倒比较小,可以忽略。什么叫使用直接量,比如,JavaScript支持使用[param,param,param,...]来直接表达一个数组,以往我们都使用new Array(param,param,...),使用前者是引擎直接解释的,后者要调用一个Array内部构造器,所以要略微快一点点。 同样,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。 字符串遍历操作 对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好。 高级对象 自定义高级对象和Date、RegExp对象在构造时都会消耗大量时间。如果可以复用,应采用缓存的方式。DOM相关 插入HTML 很多人喜欢在JavaScript中使用document.write来给页面生成内容。事实上这样的效率较低,如果需要直接插入HTML,可以找一个容器元素,比如指定一个div或者span,并设置他们的innerHTML来将自己的HTML代码插入到页面中。 对象查询 使用[“”]查询要比.items()更快,这和前面的减少对象查找的思路是一样的,调用.items()增加了一次查询和函数的调用。 创建DOM节点 通常我们可能会使用字符串直接写HTML来创建节点,其实这样做无法保证代码的有效性字符串操作效率低,所以应该是用document.createElement()方法,而如果文档中存在现成的样板节点,应该是用cloneNode()方法,因为使用createElement()方法之后,你需要设置多次元素的属性,使用cloneNode()则可以减少属性的设置次数——同样如果需要创建很多元素,应该先准备一个样板节点。 定时器 如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美国在多少个国家有驻军? 美国在哪些国家有驻军? 美国在哪些国家派有驻军? 美国在其本土以外的驻军有多少 美国都在哪些国家有驻军 空调制热的正确调法 守捉郎与侠客行 《长安十二时辰》乱弹之五 小孩子给母亲节的祝福 孩子送给妈妈的母亲节祝福语句子2024 中国篮球a级教练都是谁 有没有叫30岁什么的电视剧 有没有叫30岁什么的电视剧 查一下电视连续剧三十里铺安奇娜的扮演者是谁 查一下电视连续剧三十里铺安奇娜的扮演者是谁 三十里铺的作者简介 三十里铺的作者简介 陕北民歌三十里铺的故事? 陕北民歌三十里铺的故事? 三十里铺的剧情简介 三十里铺的剧情简介 三十里铺舍身换大烟第几集 三十里铺舍身换大烟第几集 三十里铺电视剧剧情介绍 有什么原版英文书籍值得推荐,分享一下吧? 《怦然心动》观后感英文怎么写? 怦然心动读后感juli 的父亲 《怦然心动》这本书怎么样和读后感 怦然心动英文读后感【急!在线等】 flipped 的英文读后感,,,急求 《怦然心动》的读后感在有吗?谢谢 小米黑鲨手机能玩什么大型游戏,都是在哪下? 求助,今天显卡风扇有一个突然不转了 独立显卡风扇不转了怎么办 种植茄子之前,应该如何培育出壮株呢? 求助,茄子是多年生的吗 脾虚湿重,湿热下注,吃什么中成药效果好? 茄子的做法怎么做呀 茄子的生长周期 脾虚湿热吃什么中成药 冷锋怎么会引起沙尘暴? 冷锋为什么会形成沙尘暴?谢谢 脾胃湿热吃什么中成药, 冷锋如何导致沙尘暴?暖锋为什么不可以 脾虚湿热吃什么中成药的呢? 冷锋的时候为什么会形成沙尘暴? 原来那些答案看不懂 脾胃虚弱+脾胃湿热吃什么中成药 为什么沙尘暴的形成与冷锋有关 脾虚湿盛吃什么中成药可以调理好? 冷锋的时候为什么会形成沙尘暴? 为什么冷锋天气易出现沙尘暴?低压槽的左侧为冷锋,右侧为暖锋,为什么呢?特着急,帮帮忙