JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的:
1 | for (var index = 0; index < myArray.length; index++) { |
forEach
自从JavaScript5起,我们开始可以使用内置的forEach
方法:
1 | myArray.forEach(function (value) { |
短处
无法中断循环(使用语句)
for-in循环
为了解决forEach
无法中断的问题我们可以使用for-in
for-in
循环实际是为循环”enumerable“
对象而设计的:
1 | var obj = {a:1, b:2, c:3}; |
你也可以用它来循环一个数组:
1 | for (var index in myArray) { // 不推荐这样 |
不推荐用for-in
来循环一个数组,因为,不像对象,数组的index
跟普通的对象属性不一样,是重要的数值序列指标。
总之,for–in
是用来循环带有字符串key的对象的方法。
for-of循环
ES6
里引入了一种新的循环方法,它就是for-of
循环,它既比传统的for
循环简洁,同时弥补了forEach
和for-in
循环的短板。
我们看一下它的for-of
的语法:
1 | for (var value of myArray) { |
for-of
的语法看起来跟for-in
很相似,但它的功能却丰富的多,它能循环很多东西。
for-of
循环使用例子:
1 | let iterable = [10, 20, 30]; |
我们可以使用来替代,这样它就变成了在循环里的不可修改的静态变量
1 | let iterable = [10, 20, 30]; |
循环一个字符串:
1 | let iterable = "boo"; |
循环一个 DOM collection:
循环一个DOM collections
,比如 NodeList
,之前我们讨论过 如何循环一个NodeList
,现在方便了,可以直接使用for-of
循环:1
2
3
4
5
6// Note: This will only work in platforms that have
// implemented NodeList.prototype[Symbol.iterator]
let articleParagraphs = document.querySelectorAll("article > p");
for (let paragraph of articleParagraphs) {
paragraph.classList.add("read");
}
循环一个拥有enumerable属性的对象
for–of
循环并不能直接使用在普通的对象上,但如果我们按对象所拥有的属性进行循环,可使用内置的Object.keys()
方法:
1 | for (var key of Object.keys(someObject)) { |
循环一个生成器(generators)
1 | function* fibonacci() { // a generator function |
转自脚本之家。没找到作者大大名姓。不过还是分享一下以备后用~