循环结构+数组

149 阅读4分钟

1、****循环结构: 1、问题:打印输出10000句hello world console.log("1hello world") ... console.log("10000hello world");

2、什么是循环? 1、吃饭 2、睡觉 3、做作业 4、上班上课 5、活着 6、公转自转

***循环:反复执行 【相同 或 相似】 的操作,几乎是一瞬间就完成了很多次
   循环三要素:
	1、循环条件:开始、结束,重复执行的次数
	2、循环体:循环操作,干什么事
	3、循环变量:创建,并且要让他不断的改变(自增、自减),往往向着不满足循环条件在变化

3、while循环: 语法: var 循环变量=几; while(循环条件){ 循环体; 循环变量的变化; } 原理:先判断循环条件,如果条件为真,则执行一次循环体中的语句,然后再一次判断循环条件,如果为真,则再执行一次循环体中的语句 ... 直到循环条件为假,才会退出循环 强调:循环是一次一次执行的,只不过速度很快,而且循环没结束之前,会卡主后续代码

死循环:停不下来的循环,多半用于不确定循环次数的时候
	while(true){
		循环体;
	}		

循环流程控制语句:死循环多半都要搭配上一个:退出循环:break; - 可以出现在任何一个循环之中

小练习: 1、在控制台输出1000次hello world 2、计算1-1000之间所有数字的和 3、计算1-1000之间所有奇数的和 4、猜数字小游戏 扩展:随机整数公式:parseInt(Math.random()*(max-min+1)+min); 5、以上的4个操作也用for循环进行尝试

函数:反复执行的 - 多半用户来触发,用户触发一次,就执行一次
循环:反复执行的 - 宏观上来看几乎是一瞬之间

*4、for循环:和while能做的事是一模一样的,只不过语法比while更简单,看上去也更加的舒服 语法: for(var 循环变量=几;循环条件;循环变量的变化){ 循环体; }

特殊:1、死循环:for(;;){循环体}
      2、创建循环变量部分,也可以,隔开创建多个变量

总结:
  1、while循环:一般用于 循环次数不明确的情况,死循环
  2、for循环:一般用于 已经确定了循环次数的情况 - 个人推荐,语法更加的简便

2、*****数组: 问题:保存10000个同学的姓名: var name1="代老湿1"; ... var name10000="代老湿10000";

创建变量名越多,开辟的内存空间越大,网站性能有所影响 - 以上这种写法:变量太多了

希望一个变量可以保存多个数据 - 数组

数组中的元素,都是按照线性顺序排列:
	特点:除了第一个元素,每个元素都有一个唯一的前驱元素
	      除了最后一个元素,每个元素都有一个唯一的后继元素
	*数组中的每个元素都有一个唯一的位置序号,称之为【下标】,用来表示数组中的每一个元素,下标是从0开始的,到最大长度-1结束

1、创建数组:2种方式
       *1、直接量方式:var arr=[];//空数组
		       var arr=[元素,元素,...];

	2、构造函数方式:var arr=new Array();//空数组
			 var arr=new Array(元素,元素,...);

	好奇创建这个数组有啥用?
		只是在保存数据而已,这些数据以后肯定有用

2、访问数组中的元素
	数组名[下标];

3、添加/修改数组中元素
	数组名[下标]=新元素;

	特殊:
	  1、下标处如果没人,则为添加
	  2、下标处如果有人,则为替换
	  3、如果下标越界 - 会导致我们的数组变为一个稀疏数组,不是好东西,因为会导致下标不在连续

4、数组具有3大不限制:
	1、不限制长度 - 优点
	2、不限制类型 - 优点
	3、不限制下标越界:
		获取时,下标越界,返回结果是一个undefined
		添加时,下标越界,导致我们的数组变为一个稀疏数组,不是好东西,因为会导致下标不在连续

	其实你可以想想,数组是一个长度无限的公交车,没坐人的地方其实也有一个默认值为undefined(垃圾)

	以上我们学习内容,数下标不舒服,容易数错,前面的还好,后面的就难受了

5、数组唯一的一个属性:length长度
	语法:数组名.length;

	*有了这个属性,我们就可以实现数组的三个固定套路:
		1、永远希望想末尾添加元素:arr[arr.length]=新值;
		2、获取倒数第n个:arr[arr.length-n];
		3、缩容:删除数组的倒数n个:arr.length-=n
	
6、遍历数组:把数组中的每一个元素都取出来执行相同 或 相似的操作
	公式:
	for(var i=0;i<数组名.length;i++){
		数组名[i];//当前次拿到的数据
	}