循环结构
问题:在控制太打印输出1000句Hello world--->console.log(Hello world).....consle.log(Hello world);
解决: 循环结构:反复执行相同或相似的代码
循环三要素:
1.循环条件:从哪里开始,到哪里结束
2.循环体:操作-->要做什么事
3.循环变量:变量还要变化
1.while循环:其实循环从宏观上看书是一起执行的,但是微观上看是一次一次执行的,只不过这个执行速度很快
语法:
var循环变量=几;
while(循环条件){循环体、循环变量变化;}
执行原理:先判断循环条件是否满足,如果为true,则执行循环体一次,再一次判断循环条件满足吗?如果为true,则再执行一次.....直到循环条件不满足,才会退出循环。
特殊
死循环:永远不会结束循环,但还真用,往往不确定循环次数的时候就要使用:
while(true){循环体;} 往往死循环还要搭配上,退出循环语句:break--->只能写在循环里。
2.for循环:执行原理跟while医院,只是语法更加简洁
for(循环变量的创建;循环条件;变量的变化){循环体;}
特殊:
1.循环变量的创建和循环变量的变化其实可以写多个
2.死循环:for(; ;){操作;}
总结
1.while:语法更加繁琐,建议值用不确定次数的时候--->死循环
2.for:语法更加简单,建议只用于确定循环次数的时候--->大部分
问题
函数和循环都可以是反复执行的,区别在于:
函数:要么程序员调用基础,执行几次。或者用户触发几次,执行几次
循环:程序写好,而且几乎是一询价就执行完毕的。
二、数组
问题
保存1000个同学的姓名: var name1="某某“;var name2="某某";var name3="某某“;var name4="某某";.....
以上写不合理,变量就是一个内存,我开辟的内存空间太多的话,会影响网页效率。希望一个变量名就可以保存住所有数据---->数组;
数组里面的元素是按照线性孙秀排的,除了第一个元素,每个元素都有唯一的前驱元素。 除了最后一个元素,每个元素都有唯一的后驱元素。
每个元素都有一个唯一的位置序号,称之为【下标】:从0开始到最大长度
1.创建数组:2种
1.直接量方式:var arr=[];--->空数组 var arr=[元素...];
2.构成函数方式: var arr=new Array();--->空数组 不推荐使用,更加麻烦。
其实直接量方式是ES2过后添加的,原来只要构成函数的方式 var arr=new Array(元素...)
2.访问/获取:获取出数组的某个元素数组名【下标】
3.添加/覆盖 数组名[下标]=新元素
特殊
1.下标处没有元素,则为添加
2.下标处有元素,则为覆盖/替换
4.数组的三大限制
1.不限制元素类型
2.不限制元素个数
3.不限制下标越界--->算是一个缺点
获取时--下标越界,返回underfined 添加时--下标越界,会变成稀疏数组,导致不连续,不好。
5.数组有唯一的属性:
数组.length;-->获取数组的长度
三个固定的套路
1.向末尾添加元素:arr[arr.length]=新元素;
2.获取倒数第几个表示:arr[arr.length-n]
3.缩容:删除末尾n个元素:arr.length-=n
6.其实经常我们不会去拿出数组的某个元素来操作,往往是拿出所有的东西来操作
遍历数组:将数组中的每个元素取出来执行相同或相似操作:
公式:for(var i=0;i<arr.length;i++){arr[i];-->当前元素}