Javascript 常见的循环方式总结

本文地址: http://www.cnblogs.com/zichliang/p/17412968.html
在Javascript中有很多种循环方式。有多种循环方式可以用来遍历数组、对象、以及执行一些重复性任务
但是有很多方式甚至从未用过,所以简单来总结一下JS中的循环

for循环

for 循环是在您希望创建循环时经常使用的工具。

例:

for (let i = 0; i < 5; i++) {
    console.log(`第${i + 1}次循环遍历`)
}

结果

while 循环

While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。

例:

let i = 0;
while (i < 100) {
    i = i + 1;
    console.log(`第${i}次循环遍历`)
}

结果

do……while循环

先运行循环代码 再执行判断条件

let a = 3;
let b = 0;

do {
    console.log("打印b的值>>>>>",b);
    b++;
} while (b < a); // 当a小于等于b的时候终止她。

结果

while:先判断后执行; do-while:先执行再判断,即使初始条件不成立, do-while循环至少执行一次;

for-in循环

fo…in循环一般用于对象的遍历

let kj = {
    "a": 1,
    "b": 2,
    "c": 3
}


//使用for-in遍历这个对象
for (let k in kj) {
    console.log(k, kj[k])
}

结果

注! 最好不要用for in遍历数组

for-of循环

for...of 循环是 ES6 中新增的一种循环类型,它允许您遍历可迭代对象(例如数组、字符串、Map 或 Set)中的每个元素,并对其执行指定的操作。
for-of 可以更方便的循环遍历数组等

let arr = [1, 2, 4, 5, 6, 7]
for (let v of arr) {
    console.log(v);
}

结果

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 for in更适合遍历对象,不要使用for in遍历数组 使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

map()循环

map()是一种常用的数组方法,它可以将一个数组中的每个元素按照一定规则映射为一个新的数组

const originalArray = [1, 2, 3, 4, 5];
const newArray = originalArray.map((number) => {
  console.log(number)
  return number * 2;
});

console.log(newArray); // Output: [2, 4, 6, 8, 10]

结果

forEach循环

forEach()是一种常用的数组方法,可以帮助我们遍历一个数组并对其中的每个元素执行指定的操作。
例子

const originalArray = [1, 2, 3, 4, 5];
originalArray.forEach((number) => {
  console.log(number * 2);
});

结果

forEach()方法没有返回值,因此我们不能将其运行结果赋值给其他变量

filter()过滤循环

filter()是一种常用的数组方法,它可以帮助我们按照特定条件筛选出一个数组中的部分元素并返回一个新的数组

const originalArray = [1, 2, 3, 4, 5];
const filteredArray = originalArray.filter((number) => {
  // 只返回能被2整除的数 也就是偶数
  return number % 2 === 0;
});

console.log(filteredArray);

结果

filter()方法不会修改原始数组,而是返回一个新的数组作为其运行结果。因此,如果我们需要在原始数组中删除一些元素,那么就应该使用splice()方法

JS实现Python中的zip循环

熟悉python的都知道ZIP循环面对循环两个数组很好用 那么在python中如何实现呢?

例子

function* zip(...arrays) {
    let minLength = Math.min(...arrays.map(arr => arr.length));
    for (let i = 0; i < minLength; i++) {
        yield arrays.map(arr => arr[i]);
    }
}

let aList = [1, 2, 3]
let bList = ["a", "b", "c"]

for (let [a, b] of zip(aList, bList)) {
    console.log(a, b)
}

结果

some()和every()

some() 和 every() 方法是很有用的数组方法,它们都是用来遍历数组并返回布尔值。

some() 方法

some() 方法用来检测数组中是否有至少一个元素满足指定条件。当任意一个元素满足条件,则该方法返回 true;否则,返回 false。

例子:

const numbers = [2, 4, 6, 8, 12];
const hasLargeNumber = numbers.some(function(element) {
  return element > 10;
});

console.log(hasLargeNumber); 

结果

很显然 只要有一个结果满足了 大于10的条件 就返回了true

every() 方法

every() 方法与 some() 方法类似,不过它要求所有元素都满足指定条件。当所有元素都满足条件,则该方法返回 true;否则,返回 false。
例子

const numbers = [2, 4, 6, 8, 12];
const hasLargeNumber = numbers.every(function(element) {
  return element > 10;
});

console.log(hasLargeNumber);

结果

很显然 只要有一个结果不满足 大于10的条件 就返回了false 和some方法相反

reduce() 和 reduceRight()

是 JavaScript 数组中常用的两个方法,它们都是用于将数组中的元素归纳为单个值。
它们可以帮助您迭代和聚合数组中的元素

reduce() 方法

reduce() 方法对数组中的每个元素执行一个由您提供的函数,并将其结果汇总为单个返回值。该方法需要传入两个参数:一个回调函数和一个可选的初始值。

const numbers = [1, 2, 3, 4, 5];
//accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。
const sum = numbers.reduce(function(accumulator, currentValue) {
  console.log(accumulator,currentValue)
  return accumulator + currentValue;
}, 0);

console.log(sum)

结果

accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。

reduceRight() 方法

reduceRight() 方法与 reduce() 方法类似,不过它是从数组的末尾开始遍历数组并执行回调函数。该方法也需要传入两个参数:一个回调函数和一个可选的初始值。

const numbers = [1, 2, 3, 4, 5];
//accumulator: 表示当前已经累积的值初始值是0 currentValue 表示当前正在被遍历的数组元素。
const sum = numbers.reduceRight(function(accumulator, currentValue) {
  console.log(accumulator,currentValue)
  return accumulator + currentValue;
}, 0);

console.log(sum)

结果

本文地址: http://www.cnblogs.com/zichliang/p/17412968.html

本文转载于网络 如有侵权请联系删除

相关文章

  • 线程池好处和核心参数等面试必备

    一、背景线程池的优点,以及核心参数是面试的重点。在工作中也经常用到,大多人就看着之前源码怎么写copy一份就完事,没有深入得思考过为啥这样。还有就是核心线程池参数理解可能不太透彻。本文介绍使用线程池的优势以及相关核心知识点。二、线程池的优势现在不管是Java线程池,还是数据库连接池,redis缓存连接池,包括dubbo的线程池等等都是为了复用线程,避免频繁的创建和销毁线程浪费大量的系统资源,增加并发编程的风险。线程池的作用:控制线程,通过控制线程来控制最大并发数实现任务线程队列缓存策略和拒绝机制。实现某些与时间相关的功能,如定时任务,周期执行等。隔离线程环境,一个线程专门执行耗时任务,另外一个线程执行响应要求高的任务。三、线程池核心参数线程池的核心参数是面试的一个重点!!!!一般通过创建java.util.concurrent.ThreadPoolExecutor对象来创建线程池。主要包括5个参数,如图所示:其实源码的注释就是最好的学习材料,第一个参数:corePoolSize:核心常驻线程池。如果等于0,任务执行完,没有任何请求进入则销毁线程;如果大于0,即使本地任务执行完毕,核心线

  • 国内医学论文造假又起风波,Nature重磅发文打击泛滥的「论文工厂」

    机器之心报道编辑:维度近日,Nature头版的一篇文章起底了科研界臭名昭著的「论文工厂」问题,并分析了期刊以及出版商面对论文造假如何采取措施,倡导全世界范围内大力打击学术欺诈现象。在科研界,学术论文造假一直是广受关注的话题,国内外皆如此。举报学术论文造假的新闻也一直不断,每次爆出都会引发圈内专业人士和圈外吃瓜群众的热议。前段时间,官方在对网友反映的多位院士、教授的相关论文涉嫌造假问题的答复中,重新定义了「图片误用」,戳中了业内人士和广大网友敏感的神经。网友戏谑地称:低情商学术造假,高情商图片误用。此外,据相关数据统计,2020年,全球撤稿英文论文1932篇,中国819篇,美国374篇。国内外如此严重的学术造假现象是怎样造成的?根源又在哪里呢?近日,Nature头版刊登了一篇名为《打击制造伪科学的论文工厂》的文章,着重分析了国内外学术界广泛存在的「论文工厂」(papermill)问题,并特别指出了中国医学界的学术论文造假乱象。 文章链接:https://www.nature.com/articles/d41586-021-00733-5「论文工厂」泛滥下,期刊和出版商如何应对2020年1

  • Android实现View拖拽跟随手指移动效果

    今天想实现这个功能,但是网上搜索代码,都是利用setPadding,setMargin等方法去实现的,这在Android4.0以前是没问题的,但是,android4.0后系统已经提供了更简单的方法给我们用了,就是setTranslationX()和setTranslationY()。这两个是View的属性方法。现在我就用这两个方法实现一个View可以跟着手指移动拖拽的效果。代码非常非常简单:publicclassDragViewextendsTextView{ floatmoveX; floatmoveY; publicDragView(Contextcontext){ super(context); } publicDragView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override publicbooleanonTouchEvent(MotionEventevent){ switch(event.getAction()){ caseMotionEvent.ACTION_DOWN: moveX=ev

  • 【数据分析可视化】时间序列数据的采样和画图

    importnumpyasnp importpandasaspd frompandasimportSeries,DataFrame复制#生成时间索引的Series序列 t=pd.date_range('2019-01-01','2019-12-29') t复制DatetimeIndex(['2019-01-01','2019-01-02','2019-01-03','2019-01-04', '2019-01-05','2019-01-06','2019-01-07','2019-01-08', '2019-01-09','2019-01-10', ... '2019-12-20','2019-12-21','2019-12-22','2019-12-23', '

  • 科学瞎想系列之一一七 NVH那些事(18)

    上期我们讲了各种激振源及结构的固有特性识别,利用上期所介绍的方法可以识别出引起振动噪声问题的主要原因,在得知振动噪声是由于激振源(电磁力波、机械激振、空气动力学)引起还是结构共振引起后,就需要进一步确诊引起振动噪声的具体力波阶次、具体机械原因以及具体空气噪声原因,以便有针对性地采取措施解决问题。本期我们说说各种激振源的特征和判别方法。 1轴承激振源的特征 通常电机所用的轴承包括滚动轴承和滑动轴承两大类,滚动轴承产生的噪声要比滑动轴承产生的噪声大,双列滚子轴承比单列滚子轴承噪声大。特别是高速运行时,滚动轴承可能是电机最强烈的噪声源。 1.1滚动轴承激振特征 影响滚动轴承噪声的主要因素包括:内外圈不同心、不平行导致的内外圈歪斜;滚动体大小不一;滚动体的圆度及表面缺陷;内外圈滚道缺陷;内外圈滚道波纹;保持架与滚动体间的间歇;油膜的涡动;润滑油的清洁程度;相关零部件的加工及装配精度等,许多情况下轴承的振动与附近结构零部件形成共振,会放大轴承的振动噪声。不同的原因产生的噪声频率不同,振动噪声幅值也不同。滚动轴承的噪声表现为:碾轧声、撞击声、磨削声、滚落声、保持架声音、灰尘杂质产生的声音等。 1.

  • springboot|springboot以注解方式集成mybatis

    本网站记录了最全的各种JavaDEMO,保证下载,复制就是可用的,包括基础的,集合的,spring的,Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~ https://www.javastudy.cloudspringboot集成mybatis主要有以下几大步骤引入mybatis相关依赖编写面向java的mapper接口文件编写sql的provider文件(mybatis有两种方式去维护sql,一种是xml的方式,一种是注解+provider的方式,本DEMO以provider的方式为主)引入mybatis相关依赖这一步在上文中,我们已经引过了,gradle依赖如下:implementation'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1' runtimeOnly'mysql:mysql-connector-java'复制配置数据库spring.datasource.url=jdbc:mysql://localhost:33306/javastudy?charac

  • Qt技巧-快速求最值

    利用求最值接口提高编程效率。1.求最大值constT&qMax(constT&a,constT&b) 复制2.求最小值constT&qMin(constT&a,constT&b) 复制3.求三值的中间值constT&qBound(constT&v1, constT&v2, constT&v3) 复制4.求列表容器的最值利用C++标准库接口#include<algorithm> template<classForwardIt,classCompare> ForwardItstd::min_element(ForwardItfirst, ForwardItlast, Comparecomp) ForwardItstd::max_element(ForwardItfirst, ForwardItlast, Comparecomp) 复制示例QStringListlist{"1","3","2"}; QStringmaxValue

  • 电商小程序

    功能精致电商,来客,[微信+支付宝+百度+头条]小程序+APP+公众号+PC+H5功能微信小程序电商平台(前后端开源PHP),包含分销,拼团,抽奖,红包,九宫格(老虎机)游戏等功能,整个系统架构非常简单,适合小型团队或者个人开发者二次开发。小程序APP+公众号+PC+生活号+支付宝小程序+百度小程序+头条号小程序注重界面美感与用户体验,打造独特电商系统生态圈 源码下载》下载地址https://gitee.com/laiketui/open.git功能预览SpringCloud系列精品文章1、springcloud学习手册-什么是微服务?2、springcloud学习手册-什么是springcloud? 3、springcloud学习手册-Eureka(第一节)? 4、springcloud学习手册-Eureka(第二节)? 5、springcloud学习手册-Eureka(第三节)? 6、springcloud学习手册-Eureka常见问题总结 7、springcloud学习手册-Ribbon(第一节) 8、springcloud学习手册-Ribbon(第二节) 9、springclo

  • Confluence 6 使用电子邮件可见 原

    Confluence提供了3个电子邮件策略,这些策略Confluence管理员可以通过管理员控制台(AdministrationConsole)进行配置:公开(Public):电子邮件地址公开显示在网站中。保护(Masked): 电子邮件地址还是在网站中显示的,但是电子邮件地址被掩盖了,这样有助于电子邮件地址不被垃圾邮件收集器收集后发送垃圾邮件。仅站点管理员可见(Onlyvisibletositeadministrators): 仅 Confluence管理员可以看到电子邮件地址。请注意,如果你选择了这个选项,电子邮件地址将不会在用户查找组中可见(例如,当设置 PageRestrictions 的时候)。如何配置用户电子邮件可见:在屏幕的右上角单击 控制台按钮 ,然后选择 基本配置(GeneralConfiguration)链接。选择 安全配置(SecurityConfiguration)。选择编辑(Edit)。在 安全配置(SecurityConfiguration)界面中的字段是可以被编辑的。从 用户电子邮件可见(Useremailvisibility)下拉菜单中选择上面提到的3种

  • PHP程序员应该知道的15个库

    概述:近几年,PHP已经成为最受欢迎的一种有效服务器端编程语言,PHP库在扩展该语言的核心功能方面具有重要的作用。今天,小编将列出15个这样的PHP库,欢迎大家品鉴!最几年,PHP已经成为最受欢迎的一种有效服务器端编程语言。据2013年发布的一份调查报告显示,PHP语言已经被安装在全球超过2.4亿个网站以及210万台Web服务器之上。PHP代表超文本预处理器,它主要用于创建动态网页。当然,PHP还有许多其他用途,在Web开发人员中具有极高的人气。随着相关技术在各个领域的不断发展,PHP开发人员目前拥有非常旺盛的市场需求。PHP库在扩展该语言的核心功能方面具有重要的作用。对于程序员来说,库是非常有用的资源,其中包含了预先写好的代码、类、值、消息模板和配置数据等。目前,有一些实用的PHP库能够以更快的速度和效率执行Web开发项目。今天,小编将列出15个这样的PHP库,欢迎大家品鉴! <h4>1.Mink</h4> Mink是一个PHP5.3的库,它可用于在测试中模拟Web应用程序与浏览器之间的交互。这个库能够帮助开发人员利用单一的API对多种不同的浏览器模拟器进行同

  • MySQL 面试选择题15道(单选)

    1、MySQL数据库四种特性,不包括()A.原子性B.事务性C.一致性D.隔离性2、MySQL报错error1062的意思是()A.连接数据库失败,没有连接数据库的权限B.字段值重复,入库失败C.未定义用户对数据表的访问权限D.删除数据库文件失败3、MySQL主从架构如下:主库从库192.169.1.1192.168.1.2需要在从库上采用mysqldump备份并记录主库binlog、Position点,需要加哪个参数(不考虑其他参数)()A.--master-dateB.--single-transactionC.--dump-slaveD.--opt4、以下哪个不能有效减小从库延迟时间()A.主库进行update操作时where后条件没有索引,添加索引B.主库有大事物,增加缓存,异步写入数据库,减少直接对db的大量写入C.主库并发更新写入频繁,从库设置innodb_flush_log_at_trx_commit=1及sync_binlog=1D.数据库中存在大量myisam表,修改表结构为innodb存储引擎的表5、表test(aint,bint,timedate)涉及以下3条sq

  • Mozilla将会在Firefox 48版本中引入Rust Component

    Mozilla近日宣布,将会在Firefox的正式版中首次引入Rust代码。而该版本(Firefox48)将于在2016年8月2日发布。Rust是一种可以更为安全地替代C++的编程语言,因为其独特架构架构,能降低基于Rust的应用中内存泄漏的风险。内存泄漏问题(例如释放后重利用、缓存溢出等)是最近安全漏洞的根源。不止是AdobeFlashPlayer,Firefox和Chrome等浏览器也深受其害。因为自身特性的需要,七年前Mozilla决定赞助这个项目,并最终将其作为自己的编程语言。Firefox的第一个Rust组件是浏览器的媒体栈去年测试了Rust的特性之后,Mozilla基金会近日宣布,Firefox48的新媒体栈将完全通过Rust代码实现。这一选择并不是随机的,因为在解析多媒体文件时,媒体组件会经常遭到恶意代码攻击。无独有偶,Android最不安全的组件当属Mediaserver(媒体处理)组件,它每月都会被打补丁,其中Stagefright漏洞则最易遭到攻击。Mozilla研究战略总监DaveHerman表示:“用Rust这样内存安全的编程语言作为Mozilla的工具,将在w

  • 晓晓--python的迭代器

    1.什么是迭代器?---迭代器---是一种可以逐一获取集合的元素的对象,是一个可以记住遍历位置的对象,迭代器对象从集合中的第一个元素开始访问,直到所有的元素被访问完,迭代器访问元素只能依次往前访问,不可往后退即不可逆访问; 2.获取到迭代器的方法 1)iterator1=iter(iterable);  2)iterator1=iterable_object.__iter__();  不管是方法1还是方法2,前提都是对象实现了迭代器方法; 3.访问迭代器中元素----得到迭代器之后,怎么访问数据呢?   方法1:next()方法,ret=next(iterator1),每次调用next方法,都会得到一个元素;已经是最后一个元素的时候,再调用next()方法,会报错,StopIterationexception,表示已经是最后了,不可以再继续遍历了;   方法2:iterator1.__next__();   方法3:直接使用for循环  foriteminiter1:print(iter1.__next__())复制 4.除了

  • 分布式文件系统--GFS

    前言:Google大数据处理的3篇核心论文 《TheGoogleFileSystem》:http://research.google.com/archive/gfs.html 《MapReduce:SimplifiedDataProcessingonLargeClusters 》:http://research.google.com/archive/mapreduce.html 《Bigtable:ADistributedStorageSystemforStructuredData》:http://research.google.com/archive/bigtable.html GFS(Google文件系统)作为一个分布式文件系统,为Google提供基础的海量数据存储服务。虽然GFS并没有开源,但Google在其04年发表的论文《TheGoogleFileSystem》里面做了详细的介绍,很多设计思路都很有学习的价值。     分布式文件系统      分布式文件系统:当数据集的大小超过一台独立物理计算机的存储能力

  • Django杂篇(2)

    目录Django杂篇(2)cookie与sessioncookiesessiondjango中间件自定义中间件跨站请求伪造(csrf)CSRF的解决方案添加校验tokenFORM表单添加AJAX添加装饰器方式 Django杂篇(2) 本文主要介绍cookie与session组件,django中间件以及CSRF的一些介绍. cookie与session 首先我们要知道,HTTP协议本身是无状态的,无状态的概念是什么? 无状态的意思就是当用户的请求通过HTTP发给后端的时候,HTTP本身是不保留用户的任何状态的,即每次用户发送HTTP都会当做是用户第一次发送数据,这是非常不合理的,试想一下,如果我们登陆一个购物网站,登陆成功之后想要做购买商品,可是是做不了的,因为HTTP无状态,每次登陆都是第一次登陆,我们总是在不停地登陆,就没办法做任何操作. 所以就引出了cookie和session的概念,他们都是用来让用户"保持状态"的,即可以让用户处于登陆状态下,从而进行一系列的操作. cookie cookie的实际本体只是一段字符串,他是从服务器发送出来并且存放在浏览器(客户端)上的一组组键值对

  • python库与python版本的兼容性问题

    python库与python版本的兼容性问题 现象 python3.5直接使用pip安装requests库后,再执行pip命令出现报错AttributeError:module'os'hasnoattribute'PathLike' 解决 发现是requests的依赖库certifi的版本是2022.06.15,不兼容python3.5导致的,直接把python目录下的certifi库目录删除,重新安装requests==2.24.0和certifi==2020.6.20

  • [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.4 规范电路模型

    7.4规范电路模型 在讨论了推导开关变换器交流等效电路模型的几种方法后,让我们先停下来,说明下这些结果。所有的在CCM下以PWM工作的DC-DC变换器都具有相似的基本功能。首先,他们在理想情况下,以100%效率对电压或者电流等级进行转换。其次,他们包含对波形的低通滤波器。尽管必须滤除高频开关纹波,但这种滤波也会影响到低频电压和电流的变化。第三,可以通过占空比的变化来控制变换器的波形。 我们期望具有相似物理特性的变换器具有相似的等效电路结构。因此,我们可以定义一个规范电路模型,来正确说明所有这些基本电路。任何在CCM下的采用PWM的DC-DC变换器都可以采用这种规范形式。这就允许我们能够从物理的视角理解,并比较变换器的交流特性。为了能够以通用方式分析变换器的特性而无需参考特定的变换器,后面的几章中我们将使用规范模型。因此,规范模型使我们能够定义和讨论变换器的物理交流特性。 在本节中,将基于物理参数建立规范电路模型。将给出一个说明如何将变换器等效电路转换为规范形式的实例。最后,还将几种基本的理想变换器的规范模型参数制成了表格。 7.4.1规范电路模型的建立 规范电路模型的物理构成在图7.3

  • c# RSA 加解密

        publicstaticstringpublicKey="<RSAKeyValue><Modulus>zUQAZhzjzJcNmEAG1lN+lzScePUh6t5iwHejCIpemILi6yBGyb5S2ZB7EX9v+T6FAx/A/LRNNJbgr8duv8mHttrWD5XSmncv83nXEgj6qbNkqgVtBHC0q10tqizpmQ5m9MsL7XXT+Y080wJ/r6d/SUFPo4Dpe8Mq/pRiDhyZz9M=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; publicstaticstringprivateKey="<RSAKeyValue><Modulus>zUQAZhzjzJcNmEAG1lN+lzScePUh6t5iwHejCIpemILi6yBGyb5S2ZB7EX9v+T6FAx/A/LRNNJbgr8duv8mHttrWD5XSmncv83nXEgj6qbNkqgVtBHC0q10tq

  • Python抓图必学的8种方式!

    通过用爬虫示例来说明并发相关的多线程、多进程、协程之间的执行效率对比。   ​   假设我们现在要在网上下载图片,一个简单的方法是用requests+BeautifulSoup。注:本文所有例子都使用python3.5) 单线程 示例1:get_photos.py importos importtime importuuid importrequests frombs4importBeautifulSoup defout_wrapper(func): #记录程序执行时间的简单装饰器   definner_wrapper():     start_time=time.time()     func()     stop_time=time.time()     print('Usedtime{}'.format(stop_time-start_time)) &nbs

  • javascript图片懒加载与预加载的分析

    懒加载与预加载的基本概念。   懒加载也叫延迟加载:前一篇文章有介绍:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。   预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。  两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。  懒加载的意义及实现方式有:   意义: 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。   实现方式:      1.第一种是纯粹的延迟加载,使用setTimeOut或setInterval进行加载延迟.   2.第二种是条件加载,符合某些条件,或触发了某些事件才开始异步下载。   3.第三种是可视区加载,即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离遍开始加载,这样能保证

  • linux环境下搭建Java环境-配置jdk

    linux环境下搭建Java环境 可自行下载Linux下可运行的jdk文件,这里举例使用为jdk-8u66-linux-x64.tar.gz 1.通过终端在/usr/local目录下新建java文件夹,如下命令(注意/usr前需输入空格) [root@localhostjava]#mkdir/usr/local/java 2.将下载压缩文件拷贝到/usr/local/java文件夹中,如下命令(源文件内容可根据需要自行修改) [root@localhostjava]#cpjdk-8u66-linux-x64.tar.gz/usr/local/java                      【格式:cp源文件名 /目标文件夹】 3.进入到java文件夹,如下命令 [root@localhostjava]#cd/usr/local/java 4.解压压缩包,如下命令(文

相关推荐

推荐阅读