1. for 循环 (循环代码块一定的次数 ,常用于循环数组)
for (var i=0; i<5; i++) { console.log('hello'); }
优化算法:
for (var i = arr.length - 1; i >= 0; i--) { // do something... }
相关文章
2. for in 循环 (循环遍历对象的属性 )
(for in 语句遍历对象所有属性,包括原型中的属性(使用 hasOwnProperty 和 typeof 筛选)更好的遍历对象方式,创建固定的字面量对象,使用for循环,直接取所需要的数据。)
var person={fname:"John",lname:"Doe",age:25};
for (x in
person)
{
txt=txt + person[x];
}
3. while 循环 (当指定的条件为 true 时循环指定的代码块)
while (i<5) { x=x + "The number is " + i + "<br>"; i++; }
cars=["BMW","Volvo","Saab","Ford"]; var i=0; for (;cars[i];) { document.write(cars[i] + "<br>"); i++; }
4. do/while 循环 (当指定的条件为 true 时循环指定的代码块)
do
{
x=x + "The number is " + i + "<br>";
i++;
}
while (i<5);
5.扩展
兼容低版本实现:
if
(
typeof
Array.prototype.forEach !=
"function"
) {
Array.prototype.forEach =
function
() {
/* 实现 */
};
}
eg:
[1,2,3].forEach(function(v,i){console.log(v)})
[1,2,3].map(function(v,i){console.log(v)})
扩展:
区别:
arr.forEach(function(v,i){console.log(v,i);return v*v;}) 返回 undefined
arr.map(function(v,i){console.log(v,i);return v*v;}) 返回 [1, 4, 9]
相同点:es5 引入,兼容性不好,同时不支持中断,即break continue 等方法;
5.2 jq提供 $.each $(obj).each
$.each([1,2,3],function(i,v){console.log(v)})
$([1,2,3]).each(function(i,v){console.log(v)})
6.switch // 从句具有作用域
switch (i) { case 20: alert("20"); break; case 30: alert("30"); break; case 40: alert("40"); break; default: alert("other"); }
对象遍历
Object.keys()
数组遍历
forEach