本文摘要:http://www.liaoxuefeng.com/
JavaScript的循环有两种,一种是for
循环,通过初始条件、结束条件和递增条件来循环执行语句块:
var x = 0;
var i;
for (i=1; i<=10000; i++) { x = x + i; } x; // 50005000
让我们来分析一下for
循环的控制条件:
- i=1 这是初始条件,将变量i置为1;
- i<=10000 这是判断条件,满足时就继续循环,不满足就退出循环;
- i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不满足判断条件
i<=10000
而退出循环。
for
循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break
语句退出循环,否则就是死循环:
var x = 0;
for (;;) { // 将无限循环下去
if (x > 100) { break; // 通过if判断来退出循环 } x ++; }
for ... in
for
循环的一个变体是for ... in
循环,它可以把一个对象的所有属性依次循环出来:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) { alert(key); // 'name', 'age', 'city' }
要过滤掉对象继承的属性,用hasOwnProperty()
来实现:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) { if (o.hasOwnProperty(key)) { alert(key); // 'name', 'age', 'city' } }
由于Array
也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in
循环可以直接循环出Array
的索引:
var a = ['A', 'B', 'C']; for (var i in a) { alert(i); // '0', '1', '2' alert(a[i]); // 'A', 'B', 'C' }
请注意,for ... in
对Array
的循环得到的是String
而不是Number
。