var x = 0;
var i;
for(i=1;i<=10000;i++){
?? ?x ?= x + i;
}
//计算1+2+..+10000
var arr = ['apple','cat','play'];
var i,x;
for (i=0;i<arr.length;i++){
?? ?x = arr[i];
?? ?console.log(x);
}
//for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环
var o = {
?? ?name: 'jack',
?? ?age: 20,
?? ?city: 'beijing'
};
for (var key in o){
?? ?console.log(key);//'name','age','city'
}
//要过滤掉对象继承的属性,用hasOwnProperty()来实现
// for ..in对array的循环得到的是String不是 Number
var x = 0;
var n =99;
while(n>0){
?? ?x = x + n;
?? ?n = n - 2;
}
x;//2500
//while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。
var n =0;
do{
?? ?n = n + 1;
}while(n < 100);
n;//100
//do..while循环至少会执行一次。
Map:是一组键值对的结构,具有极快的查找速度。
var m = new Map();//创建空Map
m.set('afam',66);//添加一个key-value
m.has('afam');//是否存在key:'afam':true
m.get('afam');//66
m.delete('afam');//删除key:'afam'
m.get('afam');//undefined
//一个key只能对应一个value,多次对一个key赋值,后面的值会把前面的值覆盖。
m.set('afam',66);//添加一个key-value
m.set('afam',68);//重新赋值
m.get('afam');//68
Set:一组key的集合,不存储value,key不会重复。
var s1 = new Set();//c创建空Set
var s2 = new Set([1,2,3]);//1,2,3
var s3 ?= new Set([1,2,3,3]);//1,2,3
s3.add(4);//添加元素:1,2,3,4
s3.delete(4);//删除元素4
iterable:包含Array、Map和Set,集合类型的统一
var s = new Set(['a','b','c']);
for (var x of s){
?? ?console.log(x);
//遍历Set
//for ... in遍历的是对象属性名称,for...of遍历的是集合本身的元素,建议用for...of而不是for..。in遍历.
var a = ['a','b','c'];
a.forEach(function(element, index, array){
?? ?console.log(element+', index = '+ index);
});
//element: 指向当前元素的值,index: 指向当前索引,array: 指向Array对象本身,参数可选。