小昱个人博客
欢迎来到小昱的世界

勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
关于JS代码优化的一些心得
  • 首页 > >
  • 作者:小昱
  • 2017年9月6日 14:38 星期三
  • 浏览:153
  • 字号:
  • 评论:1
  • 一、关于循环

    1. 循环时缓存数组长度

    我们一般写循环像这样:

    for (var i = 0; i < myarray.length; i++) {
       // do something
    }

    这种形式的循环的不足在于每次循环的时候数组的长度都要去获取下。这回降低你的代码,尤其当myarray不是数组,而是一个HTMLCollection对象的时候。

    HTMLCollections指的是DOM方法返回的对象,例如:

    document.getElementsByName()
    document.getElementsByClassName()
    document.getElementsByTagName()
    document.querySelectorAll()

    还有其他一些HTMLCollections,这些是在DOM标准之前引进并且现在还在使用的。有:

    document.images: 页面上所有的图片元素
    document.links : 所有a标签元素
    document.forms : 所有表单
    document.forms[0].elements : 页面上第一个表单中的所有域

    集合的麻烦在于它们实时查询基本文档(HTML页面)。这意味着每次你访问任何集合的长度,你要实时查询DOM,而DOM操作一般都是比较昂贵的。

    这就是为什么当你循环获取值时,缓存数组(或集合)的长度是比较好的形式,正如下面代码显示的:

    for (var i = 0, max = myarray.length; i < max; i++) {
       // do something
    }

     

    2. 逆序循环

    向下数到0,通常更快,因为和0做比较要比和数组长度或是其他不是0的东西作比较更有效率

    var emp = ['a','b','c','d']
    for (let i = emp.length; i--; ) {
      console.log(emp[i])
    }

    同下:

    var emp = ['a','b','c','d']
    let i = emp.length;
    while (i--) {
    	console.log(emp[i])
    }

    如果想要正序输出,则:

    var emp = ['a','b','c','d']
    let i = emp.length
    let max = emp.length - 1
    while (i--) {
    	console.log(emp[max - i])
    }

     

      您阅读这篇文章共花了:  
     本文无需标签!
    二维码加载中...
    本文作者:小昱      文章标题: 关于JS代码优化的一些心得
    本文地址:http://www.xiaoyulive.top/?post=134
    版权声明:若无注明,本文皆为“小昱个人博客”原创,转载请保留文章出处。
    Blago93lat2018-02-22 22:16
    Оказываем услуги от ямочного ремонта небольших дворовых территорий до строительства городского паркинга и дорог муниципального и федерального значения.

    Строительство дорог в Краснодаре и ЮФО

    Зонирование, повышение комфорта, экологии. Проведение комплексного озеленения, установка вспомогательных архитектурных сооружений и других элементов по индивидуальному проекту.

    Выполнение всего комплекса работ по созданию дорожного полотна любого класса и площади. Демонтаж старого полотна, создание проекта, подготовка грунта, обустройство основания, асфальтирование.

    Асфальтирование парковок/двора
    Асфальтирование для грузового транспорта
    Высокая конкурентоспособность, выполнение работ "день в день", а так же репутация надежного и качественного подрядчика.
    Повышенная гарантия на работы, Наличие СРО и международного ISO 9001, ВЫЕЗД СПЕЦИАЛИСТА В ДЕНЬ ОБРАЩЕНИЯ Бесплатно!
    Асфальтирование, Установка бордюров, Ямочный ремонт, Разбивка любой сложности осей зданий, сооружений, линейных объектов

    ____________________________________
    новости благоустройства краснодара
    управление благоустройства краснодар
    мку управление коммунального хозяйства и благоустройства краснодара

    ----------------------
    http://благоустройство-краснодар.рф/
    返回顶部| 首页| 碰碰手气| 捐赠支持| 手机版本|后花园

    Copyright © 2016-2017 小昱个人博客 滇ICP备16006294号