全面解析js中的for循环

JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的:

for(var index=0;index<myArray.length;index++) {

  console.log(myArray[index]);

}

自从JavaScript5起,我们开始可以使用内置的forEach方法:

myArray.forEach(function (value) {

  console.log(value);

});

写法虽然简单了很多,但是有很多的短处:不能中断循环(使用break或continue)

for-in实际是为循环“enumerable”(可枚举的对象)对象设计的

var obj={a:1,b:2,c:3};

for(var prop in obj) {

  console.log("obj."+prop+ "=" +obj[prop]);

}

// 输出:

// "obj.a = 1"

// "obj.b = 2"

// "obj.c = 3"

也可以用来循环一个数组:不推荐这样做

在for in函数中变量以字符串的形式出现,这时候在函数中操作a[x+1]的话是无效的,x+1会进行字符串拼接。

因为:数组的index跟普通的对象不一样,最重要的数值序列指标

总之:for-in是用来循环带有字符串key对象的方法

for-of循环

JavaScript6里引入了一种新的循环方法,就是for-of循环,既比传统的for循环代码简洁,同时弥补了forEach和for-in循环的短板

for(var value of myArray) {

  console.log(value);

}

for-of的语法看起来跟for-in很相似,但她的功能却丰富的多,能循环很多东西

for-of循环使用例子:

let iterable=[10,20,30];

for(let value of iterable) {

  console.log(value);//10   20   30

}

我们可以使用替代,这样他就变成了在循环里的不可修改的静态变量

let iterable=[10,20,30];

for(const value of iterable) {

  console.log(value);//10 20 30

}

循环一个字符串:

let iterable = "boo";
for (let value of iterable) {
console.log(value);
}
// "b"
// "o"
// "o"

let iterable = new Uint8Array([0x00, 0xff]);

for (let value of iterable) {

console.log(value);

}

// 0

// 255

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of iterable) {

console.log(value);

}

// 1

// 2

// 3

for (let entry of iterable) {

console.log(entry);

}

// [a, 1]

// [b, 2]

// [c, 3]

let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {

console.log(value);

}

// 1

// 2

// 3

循环一个 DOM collection

循环一个DOM collections,比如 NodeList ,之前我们讨论过 如何循环一个NodeList ,现在方便了,可以直接使用for-of循环:

let articleParagraphs = document.querySelectorAll("article > p");

for (let paragraph of articleParagraphs) {

  paragraph.classList.add("read");

}

原文地址:https://www.cnblogs.com/110162-wsx/p/9171628.html

时间: 2024-11-18 12:19:15

全面解析js中的for循环的相关文章

浅解析js中的对象

浅解析js中的对象 说到对象,我首先想到的是每逢过年过节,长辈们老是开玩笑的问我“你找了对象没?”.不说大家都知道,这里的“对象”指的是“女朋友”,但是今天我想要说的js中的“对象”和我们生活中谈到的“对象”不是同一回事,但是其中也有着很多相似之处.    在讲js中的对象之前,我想先抛出几个疑问:    什么是对象?    对象有哪些?    对象能做什么?    如何创建对象?    如何对对象进行操作?    对象有特性么?有的话有哪些特性?    对象有属性么?有的话有哪些?对属性如何操

php中的for循环和js中的for循环

php中的for循环 循环100个0 for ($i=0;$i<=100;$i++){ $pnums.='0'.","; } js中的for循环,循环31个相同的数.循环日期时间 var list=[]; for(var i= 0;i < 31;i++){ list.push(620); }//日期时间 var list = []; for (var i = 1; i <= 31; i++) { list.push('2017.01.' + i); }

js中的for循环

1 js中的for循环,实心菱形,空心菱形,九九乘法表,等腰三角形 /* * 2 * * 3 * * * 4 * * 5 * 6 */ 7 8 //实心菱形 9 10 var count=3; 11 for (var i=1;i<=count ;i++ ) 12 { 13 for (var k=3;k>=i ;k-- ) 14 { 15 document.write(" "); 16 } 17 for (var j=1;j<=i ;j++) 18 { 19 docum

js事件、Js中的for循环和事件的关系、this

一.js事件  1.事件 用户在网页中所触发的行为 鼠标滑动种类很多,键盘.表单特列: 点击:onclick 鼠标进入:onmouseenter 鼠标离开:onmouseleave 鼠标悬浮:onmouseover  鼠标移除:onmouseout 鼠标按下:onmousedown 鼠标抬起:onmouseup 鼠标移动:onmousemove 表单聚焦:onfocus 表单失去焦点:onblur 浏览器加载完成:onload js事件是一直存在的,可以绑定方法,也可以不绑定,如果没有绑定,事件

解析js中作用域、闭包——从一道经典的面试题开始

如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎么写,是不是这样? 可是结果呢,弹出来的都是10,为啥? var i,a for(i=0;i<10;i++){ a=document.createElement('a') a.innerHTML=i+'<br>' a.addEventListener('click',function(eve

解析js中的call

昨天看到这篇文章 http://uule.iteye.com/blog/1158829 里面讲到call的使用方法,但是作者没有讲清楚里面的关系,我的理解是 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thi

js中闭包for循环

var a=[]; for(var i=0;i<10;i++){ a[i]=function(){ alert(i); } } alert(i); //10 a[0](); //10 a[9](); //10 为什么a[0]到a[9]都是10,而不是我们想像中的0到9呢? 我的理解是js的作用域导致的. 首先来看参数的传递.js是按值传递的,源代码中的a[i]=function(){alert(i)},a[i]保存的是一个指向堆内存的地址(对象和方法在js中保存在堆内存中).当每一次for循环时

JS中常用的循环及其他

1.条件语句 if(条件语句)    {执行语句1}else    {执行语句2} 2.循环语句 for(变量,判断,变量递增/减){执行语句} for:变量经过判断语句后先执行后递增,不合符条件后不再执行 3.while和do while while(表达式1){表达式2:}表达式3: while先进行表达1的判断,符合条件执行表达式2,不符合条件执行表达式3 do{表达式1:}while(表达式2):表达式3: 不管是否符合条件,先执行表达式1,再进行表达式2的判断,决定是否执行表达3,这种

node.js 中模块的循环调用问题详解

首先,我们看一下图示代码,每一个注释其实代表一个 js 文件.所以下面其实是三个 js 文件 .第一个是我们要运行的 main 文件,后面两个是 a, b 文件. 从上面可以看书 a ,b 两个模块相互引用,上面输出结果如下所示: 那这要怎么理解呢? 首先看 main 模块,先输出  main starting; 接着调用了 a 模块: 然后我们进入到 a 模块,先输出 a starting; 接着调用 b 模块: 然后我们进入到 b 模块,先输出 b starting; 接着调用 a 模块: