了解JS性能优化是学习前端必备的一项技能。下面就简单的列出几点:

1.注意作用域,避免全局查找。

访问全局变量比访问局部变量慢,是因为需要遍历作用域链,查找作用域链需要额外的时间。所以在一个函数中,将访问多次的全局对象或者域外变量存储为局部变量来使用。如某个方法需引用全局变量的值,则在该方法所在的对象的作用域中定义一个局部变量等于全局变量的值。

避免不必要的属性查找,将属性设置为局部变量。

function(){

  var title = document.title;

  for(var i=0;i<3;i++){

    console.log(title);

  }

}

2.优化循环

简化循环体。当循环的数量不多时,展开循环。当if-else较多时,建议使用switch语句。

3.最小化语句数

声明多个变量时,可以使用一个var关键字来声明,变量之间用逗号表示。

使用数组或对象字面量来新建数组或对象。var arr= [1,2,3,4];var map={a:1,b:2}

4.JS的执行尽量脱离DOM树,限制DOM操作的次数,优化DOM交互,尽量减少浏览器对DOM的渲染和重绘操作

最小化现场更新,现场更新就是立即对页面的显示进行更新。尽量少更新。这时候可使用文档碎片来构建DOM结构。document.createDocumentFragment()

使用innerHTML来构建大的DOM结构。但是也避免重复大量的使用。

5.使用事件代理

页面上的事件处理程序的数量和页面响应用户交互的速度之间有个负相关。所以为了减少事件处理程序,尽量使用事件委托技术。

6.JS的执行顺序

JS放HTML页面最后面时,不一定提升JS性能,但是在网速较慢的时候会快速的渲染页面。

7.JS定义行为,html定义内容,CSS定义外观,不混淆

8.减少HTTP请求数,JS压缩,HTTP压缩

9.数据尽量存储在数组里

10、代码的优化不是减少代码量,而是增加代码提高代码的可阅读性。

包括正确标记变量,封装某个重复的行为,合理的注释等。

PS:以上内容如果描述的不准确,欢迎拍砖。

JS 之性能优化(1)的更多相关文章

  1. Babylon.js官方性能优化文档中文翻译

    在这里列出Babylon.js官方性能优化文档的中英文对照,并在CardSimulate项目里对其中的一些优化方法进行实践. How To 如何 Optimize your scene 优化你的场景 ...

  2. 多个JS文件性能优化

    页面中引入的JS文件是阻塞式加载的,这样会影响页面性能.以下是JS文件性能优化方法: 一:将所有的<script>标签放到页面底部,也就是</body>闭合标签之前,这能确保在 ...

  3. JS 之性能优化(2)

    继续上一篇的JS性能优化之后,下面接着讲关于前端性能优化的内容.如果有不对的地方欢迎纠正. 1.避免过多的重排与重绘操作. 尽量将DOM中的多个读操作放一起,中间不要插入写的操作,因为写操作会导致浏览 ...

  4. [Ext JS 4]性能优化

    一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...

  5. js前端性能优化之函数节流和函数防抖

    前言:针对一些会频繁触发的事件如scroll.resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能 节流: 节流:使得一定时间内只触发一次函数. 它和防抖动最 ...

  6. [js] 前端性能优化

    原文链接:http://www.cnblogs.com/xxcanghai/p/5205998.html 链接:http://www.zhihu.com/question/21658448/answe ...

  7. js代码性能优化的几个方法

    相信写代码对于大部分人都不难,但想写出高性能的代码就需要一定的技术积累啦,下面是一些优化JavaScript代码性能的常见方法. 一.注意作用域 1.避免全局查找 使用全局变量和函数肯定要比局部的开销 ...

  8. Ext.js性能优化漫谈

    Ext.js是一个用于建立企业级应用的纯JS框架.毫无疑问,它为我们提供了大量的组件,比如container,panel,field,grid,这些组件使用起来很方便,不需要去写js和html,但是e ...

  9. js加载优化三

    Javascript性能优化之异步加载和执行 Author:小欧2013-09-17 随着科技的发展,如今的网站和五六年前相比,现在的人们对web的要求越来越高了,用户体验,交互效果,视觉效果等等都有 ...

随机推荐

  1. iOS的高德地图标注特定位置

    在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存 这时只要调用自动高德地图的就行了 自己写一个控制器,导入框架 现在导入系统框架只要多打次就能出来了, ...

  2. 在js中获取get参数(仿PHP)

    复制粘贴即可..然后就可以在js中像PHP用$_GET['name']这样子获取get参数了!! /*--------------------(返回 $_GET 对象, 仿PHP模式)-------- ...

  3. CSS元素类型

    前面有一篇文章讲到在css世界中,html元素的表现都是一个个盒子,而css中盒子的显示方式有三种方式,分别是块元素.行内元素和行内块元素.本文总结这三种显示方式的特征和区别. 1 写在前面 最近在整 ...

  4. 2015年p2p网络借贷平台的发展现状

    2015年春暖花开,莺飞草长,股市大涨大跌起起落落,P2P网络借贷收到越来越多的人关注,P2P网络借贷平台是p2p借贷与网络借贷相结合的金 融服务网站,这么多P2P网络借贷平台排我们应该如何选择呢?小 ...

  5. JavaScript中的不可见数据类型

    JS提供了一些内置对象.函数和构造器供我们编程,如Math.parseInt.Object.Array等.这些都是可见的,编程时可以使用的.比如我可以new Object 或 new Array. 有 ...

  6. html3秒跳转

    <script>     setTimeout( 'window.location= "home.jsp " ',3000) ;//注意,此处“;”可加可不加</ ...

  7. GitHub中wiki的Markdown编辑方法!!

    Hello MarkDown!正常的文本 一级大标题用一个#号 一级中等标题用两个#号 一级小标题用三个#号(一次类推,一共有6级标题) 下面是无序列表 无序标题1-只需要在标题前面加上*号就可以了或 ...

  8. C++ 基本知识

    无论父类与子类的析构函数是否是virutal,子类的析构函数都会调用父类的析构函数 调用构造函数是与构造函数顺序相反,先子类后基类,否则如果基类先析构,子类的有些资源已经不存在了,会出错. 在C++中 ...

  9. uva 10562 undraw the trees(烂题) ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABB4AAAM9CAYAAAA7ObAlAAAgAElEQVR4nOyd25GsupKGywVswAV8wA ...

  10. 边工作边刷题:70天一遍leetcode: day 82

    Closest Binary Search Tree Value 要点: https://repl.it/CfhL/1 # Definition for a binary tree node. # c ...