首页 > 其他分享 >js for

js for

时间:2024-01-10 22:31:36浏览次数:23  
标签:语句 num continue 迭代 js break 循环

for-in 语句是一种严格的迭代语句,用于枚举对象中的非符号键属性,语法如下:

for (property in expression) statement

下面是一个例子:

for (const propName in window) {
  document.write(propName);
}

这个例子使用 for-in 循环显示了 BOM 对象 window 的所有属性。每次执行循环,都会给变量 13 propName 赋予一个 window 对象的属性作为值,直到 window 的所有属性都被枚举一遍。与 for 循环 一样,这里控制语句中的 const 也不是必需的。但为了确保这个局部变量不被修改,推荐使用 const。

ECMAScript 中对象的属性是无序的,因此 for-in 语句不能保证返回对象属性的顺序。所有可枚举的属性都会返回一次,但返回的顺序可能会因浏览器而异。

如果 for-in 循环要迭代的变量是 null 或 undefined,则不执行循环体。

1. for-of语句:

for-of 语句是一种严格的迭代语句,用于遍历可迭代对象的元素,语法如下: for (property of expression) statement 下面是示例:

for (const el of [2,4,6,8]) {
      document.write(el);
}

在这个例子中,我们使用 for-of 语句显示了一个包含 4 个元素的数组中的所有元素。循环会一直 持续到将所有元素都迭代完。与 for 循环一样,这里控制语句中的 const 也不是必需的。但为了确保 这个局部变量不被修改,推荐使用 const。

for-of 循环会按照可迭代对象的 next()方法产生值的顺序迭代元素。如果尝试迭代的变量不支持迭代,则 for-of 语句会抛出错误。

2. 标签语句:

标签语句用于给语句加标签,语法如下:

label: statement

下面是一个例子:

start: for (let i = 0; i < count; i++) {
      console.log(i);
}

在这个例子中,start 是一个标签,可以在后面通过 break 或 continue 语句引用。标签语句的典型应用场景是嵌套循环。

3. break和continue语句:

break和continue语句为执行循环代码提供了更严格的控制手段。其中,break语句用于立即退 出循环,强制执行循环后的下一条语句。而 continue 语句也用于立即退出循环,但会再次从循环顶部 开始执行。

在上面的代码中,for 循环会将变量 i 由 1 递增到 10。而在循环体内,有一个 if 语句用于检查 i 能否被 5 整除(使用取模操作符)。如果是,则执行 break 语句,退出循环。变量 num 的初始值为 0, 表示循环在退出前执行了多少次。

当 break 语句执行后,下一行执行的代码是 console.log(num), 显示 4。之所以循环执行了 4 次,是因为当 i 等于 5 时,break 语句会导致循环退出,该次循环不会执 行递增 num 的代码。如果将 break 换成 continue,则会出现不同的效果。

let num = 0;
    for (let i = 1; i < 10; i++) {
      if (i % 5 == 0) {
continue;
}
num++; }
    console.log(num); // 8

这一次,console.log 显示 8,即循环被完整执行了 8 次。当 i 等于 5 时,循环会在递增 num 之 前退出,但会执行下一次迭代,此时 i 是 6。然后,循环会一直执行到自然结束,即 i 等于 10。最终 num 的值是 8 而不是 9,是因为 continue 语句导致它少递增了一次。

break 和 continue 都可以与标签语句一起使用,返回代码中特定的位置。这通常是在嵌套循环中, 如下面的例子所示。

let num = 0;
num++; 10
 outermost:
for (let i = 0; i < 10; i++) {
 for (let j = 0; j < 10; j++) {
  if (i == 5 && j == 5) {
break outermost;
 } }
console.log(num); // 55

标签:语句,num,continue,迭代,js,break,循环
From: https://blog.51cto.com/u_16298172/9186744

相关文章

  • RxJS
     什么是RxJSRxJS是一个用于响应式流的库,它基于Observables(可观察对象)和Operators(操作符)的概念。它提供了一种响应式编程的方式,使得异步数据流和事件更容易管理和组合。 什么是流流可以被视为一个持续的事件序列。它可以是由用户交互、网络请求、定时器等事件触发的数据序列。这?......
  • [protobuf] ProtoBufEditor 解析bin文件和json文件
    ProtoBufEditor解析bin文件和json文件ProtoBufEditor是一个用于编辑ProtocolBuffers(ProtoBuf)文件的工具。支持导入的文件类型SingleMessageDelimitedMessagesSelfDescribingMessageSelfDescribingDelimitedText(SingleMessage)Json(SingleMessage)解析bin......
  • delphi JSON序列化(五)
    关于TJSONConverters的使用unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.StdCtrls,Vcl.Buttons,Rest.JSON.Types,Rest.JsonReflect;t......
  • delphi JSON序列化(四)
    涉及的重要类REST.Json,REST.JsonReflect,REST.Json.Interceptors,REST.Json.Types单元中。一、TJson类最简单的一个类,提供了JSON->OBJECT和OBJECT->JSON几个方法,方法有TJsonOptions参数,如:   classfunctionObjectToJsonObject(AObject:TObject;AOptions:TJsonOpti......
  • js判断坐标点是否在一个多边形坐标数组范围内
    主要用到了射线法(RayCastingAlgorithm)来判断一个点是否在多边形的范围内。下面是一个简单的JavaScript函数来实现这个功能:functionpointInPolygon(point,polygon){varx=point[0];vary=point[1];varinside=false;for(vari=0,j=polygon.length-1;......
  • JOSN字符串字段遍历(json-path)
    官网https://github.com/json-path/JsonPath依赖<dependency><groupId>com.jayway.jsonpath</groupId><artifactId>json-path</artifactId><version>2.5.0</version></dependency>......
  • Node.js 多线程编程:优化性能的关键步骤
    在 Node.js多线程允许Node.js应用并行处理任务,以此来提高性能和响应速度。Node.js内置了如 worker_threads 这样的模块来支持多线程。通过分配任务给不同的线程,能够更好地利用多核处理器,缓解单线程应用可能出现的瓶颈。Node.js中多线程的适用场景在 Node.js 中,以下几种情......
  • js判断2个时间段是否有重叠(时分)
    原理:1天1440分钟,每个时间段都有对应的数值,生成2个数组,判断数组中是否有重叠数字isTimeOverlap(startA,endA,startB,endB){if(!startA||!endA||!startB||!endB)returnfalseletsA=this.dealTime(startA);letsB=this.dealTime(startB)......
  • Next.js 开发指南 路由篇 | 动态路由、路由组、平行路由和拦截路由
     前言实际项目开发的时候,有的路由场景会比较复杂,比如数据库里的文章有很多,我们不可能一一去定义路由,此时该怎么办?组织代码的时候,有的路由是用于移动端,有的路由是用于PC端,该如何组织?如何有条件的渲染页面,比如未授权的时候显示登录框?如何让同一个路由根据情况不同展示不同的内......
  • 使用nestjs和react快速搭建项目架子
    首先搭建前后端的项目架子搭建nestjs架子npx@nestjs/clinew项目名使用vite搭建一个react+ts的架子,vite地址:https://cn.vitejs.dev/guide/。搭建好后cd到项目中,然后安装依赖,尝试启动。npmcreatevite@latest项目名----templatereact-ts数据库使用postgresql,使用do......