JavaScript day003

87 阅读4分钟

****循环:

问题:在控制台打印输出1000句hello world?
	console.log("1hello world");
	...
	console.log("1000hello world");

生活中的循环?
	1、吃饭
	2、上课
	3、上班
	4、自转
	5、公转
	7、活着

循环结构:反复执行 【相同 或 相似】 的操作
	循环三要素:
		1、循环条件:开始 到 结束,循环得次数
		2、循环变量:记录我们当前在哪一次,而且他一定会不断的变化
		3、循环体:做的操作是什么

while循环:

	语法:
	var 循环变量=几;
	while(循环条件){
		循环体;
		循环变量变化起来
	}
	执行原理:首先创建了循环变量,判断循环条件,如果条件满足,则执行一次循环体,并不会结束循环,会回过头,继续判断循环条件,满足的话,则再做一次
		......
		 直到循环条件不满足false时,才会退出循环
	宏观上看循环感觉一瞬间就结束了,但是微观上看其实是一次一次执行的

	特殊:
		1、有的时候真有可能需要使用死循环:永远不会停下来的循环
		     何时使用:不确定循环次数的时候
			while(true){
				循环体
			}

		2、退出循环语句:break - 只能用在循环中,多半都是搭配死循环使用的

2、*for循环:和while原理是一样的,但是他比while看上去更加的整洁,简单,舒服

	语法:
		for(var 循环变量=几;循环条件;循环变量变化起来){
			循环体;
		}

	死循环:
		for(;;){
			循环体
		}

面试题:for 和 while的区别?

		几乎没区别:
			一般来说我们不确定循环次数的时候,会使用while循环 - 死循环
			一般来说我们确定循环次数的时候,会使用for循环 - 大部分情况                                        

for循环案例(求偶数的和)

    <script>
        //1-1000的和
        for(var i=1,sum=0;i<=1000;i++){
            sum+=i
        }
        console.log(sum);
         //偶数的和
         for (var i=1,sum=0;i<=1000;i++){
            if(i%2==0){
                sum+=i;
            }
         }
         console.log(sum);
    </script>
</body>250500

双重for循环

for(外层的初始化变量;外层的条件表达式;外层的操作表达式){
   for(里层的初始化变量;里层的条件表达式;里层的操作表达式){
		/、执行语句;
   }
}
2、我们可以吧里面的循环看做是外层循环的语句
3、外层循环一次,里面的循环执行全部
4、例子如下
            for (var i = 1; i<=3; i++){
            console.log("这是外层循环第"+i+"次");
            for(var j = 1;j<=3; j++){
                console.log("这是里层的循环第"+j+"次");
            }
        }

九九乘法表 双重for循环案例

九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16    
            function chengfa() {
            for (var j = 1; j <= 9; j++) {//j=3 j<=9
                for (var i = 1, str = ""; i <= j; i++) {//i=4  i<=3
                    str = str + i + "*" + j + "=" + i * j + " ";//"1*3=3 2*3=6 3*3=9 "
                }
                console.log(str);
            }
        }

数组的基础(重点)

	问题:保存1000个同学的姓名?
		var name1="杨都1";
		...
		var name1000="杨都1000";

		不推荐,变量其实就是我们所谓的内存,你的变量创建的越多,那么我们开辟的内存空间就越大,消耗也就越大,网站的性能就会越差

	解决:数组:创建一个变量可以保存【多个数据】
	       	     数组都是线性排列,除了第一个元素,每个元素都有唯一的前驱元素
				    除了最后一个元素,每个元素都有唯一的后继元素
		     ***每个元素都有一个自己的【唯一的】位置,称之为下标,下标从0开始的,到最大长度-1结束
                     

创建数组

		1、*直接量方式:var arr=[];//空数组
			          var arr=[数据,....];

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

二、获取数组中的数据:
		数组名[i];

三、后续添加/替换元素
		数组名[i]=数据;
		具体就看i位置有没有数据

四、数组具有三大不限制:
		1、不限制元素的个数
		2、不限制元素的类型
		3、不限制下标越界 - 不是个好东西
			如果获取元素时下标越界,得到undefined
			如果添加元素时下标越界,得到一个稀疏数组

五、数组有一个唯一的属性:length - 长度
		语法:数组名.length;
		三个固定套路:
			1、向末尾添加元素:arr[arr.length]=数据;
			2、获取数组的倒数第n个元素:arr[arr.length-n];
			3、缩容:删除数组倒数n个元素:arr.length-=n;

六、往往很多情况,我们不会拿出某个元素来使用,而是拿出所有的元素来进行 相同 或 相似的操作
	      遍历数组:把数组中的每个元素取出来进行 相同 或 相似的操作
		for(var i=0;i<arr.length;i++){
			arr[i];//当前次元素
		}
           例子:var arr=["谢卓铭","沈阳陈","张未来","王江东","聊文物"];
                var what=["扣脚","看扣脚","在睡觉","吃饭","吃肉"];
                for(var i=0;i<arr.length;i++){
	console.log(arr[i]+"正在"+what[i]);
                                             }