+pink老师的JS教程笔记1+ 分支语句 循环 数组

JS流程控制-分支

目标

  • 能够使用 if 分支语句
  • 能够使用 switch 分支语句
  • 能够使用三元表达式

分支语句

  • if 语句
    案例(为啥不用转换类型也可以???)
<input type="button" value="if语句案例" onclick="wangba()">
	<script>
		function wangba(){
			var wbage = prompt('how old r u');
			// if((Number(wbage)) >= 18){
			// 	alert('come in');
			// }
			if(wbage >= 18){
				alert('come in');
			}
		}
	</script>

案例判断闰年(总是忘记调用html调用函数后加()!)

<input type="button" value="判断闰年" onclick="every4Year()">
	<script>
		function every4Year(){
			var urYear = prompt('年份');
			if(urYear % 4 == 0){
				alert('闰年');
			}else{
				alert('平年');
			}
		}
	</script>

(omg闰年除了能被4整除还要不能整除100,或者能够被400整除【四年一闰,百年不闰,四百年再闰】,所以应该是if(uryear %4 == 0 && uryear%100 != 0 || uryear % 400 == 0)!!!)

案例判断是否中奖

<input type="button" value="判断是否中奖" onclick="andy()">
	<script> 
		function andy(){
			var andy = prompt("w ur name");
			if(andy == 'andy'){
				alert('surprise5');
			}else{
				alert('nothing');
			}
		}
	</script>
  1. 三元表达式 (像if else)
    条件表达式 ? 表达式1 : 表达式2 ;
var num = 10;
var result = num > 5 ? 'yes' : 'no';
console.log(result); //表达式是由返回值的
var blingnum = prompt('num');
var result = blingnum < 10 ? blingnum = '0' + blingnum : blingnum;
console.log(blingnum);
  1. switch 语句
    多分支语句 进行匹配 可以多选一(特定值比较合适,有范围的用 if else更合适)
    switch(表达式){
    case 1: 执行语句; break;
    case 2: 执行语句;
    default: 执行语句;break;

    在实际开发中,表达式经常写为变量,变量的值与 case 的值匹配时是全等的,值和数据都相等,如果case里没有break,则继续执行下一个case

    案例 查询水果

    var melon = prompt('水果');
    switch(melon){
    		case 'apple': 
    			alert('5.5yuan');
    			break;
    		case 'banana':
    			alert('bananayuan');
    			break;
    		case '西瓜':
    			alert('dont wanna melon');
    			break;
    		default:
    			alert('nothing');
    			break;
    	}
    

    switch 语句和 if else if语句的区别
    ①一般情况下两个语句可以互换
    ②switch…case 语句通常处理case比较稳定的情况,而 if else语句更加灵活(常用于范围判断)
    ③switch 语句进行条件判断后直接执行到程序的条件语句,效率更高,而 if else需要执行多种条件判断
    ④当分支较少时,if else语句执行率比 switch高
    ⑤当分支较多时,switch 语句的执行效率更高,且结构更清晰

200422补充:
if (num == 1){}
else if(num == 2) {}
else if(num == 3){}
分支多时,每个 if 都要进行判断,效率降低
+++++++++++++++++
switch 执行时 将条件表达式的值和 case 后的表达式的值 依次作全等比较 若相等则开始执行case 后的代码

循环结构

目标

  • 能够说出循环的目的
  • 能够说出 for 循环的执行过程
  • 能够使用断点调试来观察代码的执行过程
  • 能够使用 for 循环完成累加求和等案例
  • 能够使用双重 for 循环完成乘法表案例
  • 能够说出 while循环和 do while 循环的区别
  • 能够说出 break 和 continue 的区别

断点调试
sources设置号好断点以后再刷新浏览器即可ping-JSP73断点调试
案例 1-100累加和

var sum = 0;
   	for(i=1;i<=100;i++){
   		sum += i;
   	}
   	console.log(sum);
//奇偶数累加和
var even = 0, odd = 0;
   	for(i=1;i<=100;i++){
   		if(i % 2 == 0){
   			even += i;
   		}else{
   			odd += i;
   		}				
   	}
   	console.log(even);
   	console.log(odd);
//求学生成绩案例
var numcheng = prompt('总人数');
var sum = 0;
var average = 0;
for(var i = 1;i <= numcheng;i++){
   var chengji = prompt('第' + i + '个成绩');
   sum += Number(chengji); //注意转换数据类型
   	}
average = sum / numcheng;
alert(average);

写学生成绩时没有考虑数据类型转换问题,除了prompt接受的数据为字符串,还有求average时使用除法也是一个隐式转换(弹幕看见的)

  • 双重 for 循环
    外层执行一次,里面的循环执行全部
    for(var i = 1;i <= 3; i++){
   			console.log('外层循环' + i);
   			for(var j = 1;j <= 3;j++){
   				console.log('里层循环' + j);
   			}
   		}
   	}
	//倒三角形案例
		var star = '';
		for(i = 1;i <= 10;i++){
			for(j = i; j <=10;j++){//j=1;j<10-i;j++
				star += '⭐';
			}
			// console.log(star);
			star += '\n';
		}
		console.log(star);
	var star = '';
		for(i = 1;i <= 10;i++){
			for(j = 1;j <= i;j++){//j = 10;j <= 10;j--死循环
				star += '⭐';

			}
			star += '\n';
		}
		console.log(star);

天哪这两个三角形真的把我整傻了!!不过为啥要小于等于啊?直接等于好像也没问题啊??
案例九九乘法表

	var result = '';
			for(i = 1;i <= 9;i++){
				for(j = 1;j <= i;j++){
					result += j +'*' + i + '=' + (i*j) + ';';
				}
				result += '\n';
			}
			console.log(result);
		}

总是在小细节上面绊倒……原来不能直接等于的原因是要依次循环 好困啊啊啊

  • while循环
			var i = 1;
			while(i <= 10){
				console.log(i);
				i++;
			}
			//1~100之间的整数和
			var j = 1;
			var sum = 0;
			while(j <= 100){
				sum += j;

				j++;
			}
			console.log(sum);
			//弹出提示框”你爱我吗“,输入我爱你则结束,否则循环
			var valuelove = prompt('do u love me?');
			while(valuelove !== 'yep'){
				//注意赋值重新判断,否则造成死循环
				valuelove = prompt('do u love me');
			}
		}
  • do while循环
    do {
    //循环体代码- 条件表达式为 true 时重复执行循环体代码
    }while (条件表达式);

    先执行循环体,再进行判断,至少执行一次循环体
    案例
	function dothree(){
			//打印人的一生
			var doage = 1;
			do{				
				console.log(doage);
				doage++;
			}while(doage <= 10);
			//1~100整数和
			var sum = 0;
			var j = 1;
			do{
				sum += j;
				j++;
			}while(j <= 100);
			console.log(sum);
			//提示框			
			do{
				var message = prompt('do u love me?');
			}while(message !== 'yep');
			alert('fine');
		}
  • 循环小结
    - ① 在实际工作中更常用 for 循环语句,写法更简洁直观
    - ② 计次数,与数字相关的更常用 for
    - ③ while 和 do while执行顺序与次数都不同

  • continue 和 break
    continue退出当前次循环,break 退出整个循环

JS命名规范

  • 标识符命名规范
    - 变量、函数的命名必须要有意义,变量一般使用名词,函数一般使用动词

  • 操作符命名规范
    - 一般操作符前后都由空格

  • 单行注释规范
    - 单行注释前有个空格

  • 其他规范
    - 括号前后空格,花括号对齐

JS数组Array

目标

  • 知道为什么要有数组

  • 创建数组

  • 能够获取数组中的元素

  • 对数组进行遍历

  • 给数组新增一个元素

  • 独立完成冒泡排序案例

  • 数组的创建方式
    - 利用 new 创建数组var arr = new Arry();
    - 利用数组字面量(见名知意?)创建数组 var arry = []; 更常见

  • 遍历数组

var arry = ['关羽','张飞','马超','赵云','黄忠','刘备','姜维'];
			for (i = 0;i <= 6;i++) {
			console.log(arry[i]);
			}

数组的长度
数组名.length
- 数组的长度是元素个数,不要与索引号混淆
- arr.length 动态获取数组个数

200422补充:
length 获取不连续的数组时返回的是数组最大索引号+1,而不是数组实际元素。

案例遍历数组

		var arry = [2,6,1,7,4],
			sum = 0,
			average = 0;
			for (i = 0; i < arry.length;i++) {
				sum += arry[i]; //i是计数器,加的是数组元素
			}
			average = sum / arry.length;
			console.log(sum,average);

pink-JSP102数组案例

  • 新增数组长度
    - ① 修改 length 长度
    arr.length = 5; 新增空元素初始值为 undefined
    - 新增数组元素 修改索引号 追加数组元素,不要直接给数组名赋值,会直接覆盖数组 原本数组内容
    arr1[5] = ‘新增’ ;

200422补充:
通过 arr[arr.length] = 10; 往数组内添加元素
+++++++++++++++
arr = [10]; arr = [20,30]; // 输出arr 20,30

筛选数组案例

		var arr1 = [2,0,6,1,77,0,52,0,25,7];
			var newArr = [],
				j = 0;  
				//第二种方法
				//刚开始 newArry.lengrh 就是0 
			for (i = 0 ;i < arr1.length; i++) {
				if (arr1[i] >= 10) {
					newArr[j++] = arr1[i];
					// 新数组索引号从零开始
					// newwArr[newArr.length] = arr1[i];
				}
			}
			console.log(arr2);

案例翻转数组

		var arr1 = ['red','green','blue','pink','purple'];
			var newArry = [];
			for (i = arr1.length; i > 0; i--) {
				//i >= 0的话会多出一个 
				//数组arr1内的第0,1,2,3,4个
				
				//老师的答案: i = arr1.length - 1;i >= 0;i--;
				newArry[newArry.length] = arr1[i-1];
			}
			console.log(newArry);

案例冒泡排序

		var arr1 = [5,4,3,2,1];
			// 比较四趟
			for (i = 0; i < arr1.length - 1;i++) {
				//每趟比较次数不同
				for (var j = 0;j < arr1.length - i - 1;j++) {
					// 每个数两两比较
					// if 里的 j 写成了 i ,出错 原因咦想通,花费30分钟
					if (arr1[j] > arr1[j + 1]) {
						var temp = arr1[j];
						arr1[j] = arr1[j + 1];
						arr1[j + 1] = temp;
					}
				}
			}
			console.log(arr1);

pink-JSP112冒泡排序分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值