Day12-JS3:循环,数组,函数

不定数量循环
对&&表达式取反,里面的运算符也要取反为||
while(username != 123 || password != 888){
while(!(username == 123 && password == 888)){var username = +prompt('请输入用户名')var password = +prompt('请输入密码')
}
alert('您已成功登录')
JavaScript break 和 continue 语句
break 语句用于跳出循环(终止当前循环)。
continue 用于跳过循环中的一个迭代(跳过当前循环,继续下一次循环)。
continue 语句
// 模拟电梯上行过程中,一共有11层,第七层不停for(var i = 1;i<=11;i++){if(i==7){continue // 跳过循环到下一次循环}console.log(`${i}层到了~~~~`)
}
break 语句
break 语句可用于跳出循环。
break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)
// 一个人,从二十岁开始上班,寿命是80岁,60岁退休,打印xx岁在上班
for(var i=20;i<=80;i++){if(i==60) break // 终止当前循环。可以用在循环和switch里。if只有一句,可以不要花括号console.log(`${i}岁在上班~~~~`)
}
直接使用死循环不停地提问,回答正确的时候break
while(true){var answer = prompt('你爱我吗?1/0')//使用break跳出循环if(answer==1)break
}
alert('爱你呦')
while(true){var username = +prompt('请输入用户名')var password = +prompt('请输入密码')//使用break跳出循环if(username == 123 && password == 888)break
}
alert('登陆了')
for(var i=1;i<=3;i++){for(var j=1;j<=4;j++){// 内层使break终止循环。if(j==2)breakdocument.write('☆')}document.write('
')
}
j==2时终止循环,只终止了内循环,没有终止外循环,所以还是有第一列三个星星
数组-Array对象
数组对象的作用是:使用单独的变量名来存储一系列的值。 方便管理数据
数组对象是使用单独的变量名来存储一系列的值。
如果你有一组数据(例如:车名字),存在单独变量如下所示:
var car1="Saab";
var car2="Volvo";
var car3="BMW";
然而,如果你想从中找出某一辆车?并且不是3辆,而是300辆呢?这将不是一件容易的事!
最好的方法就是用数组。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的ID,以便它可以很容易地被访问到。
数组的定义和初始化
创建一个数组,有三种方法。
1: 常规方式:
var arr = new Array() console.log(arr)arr[0] = '123' arr[1] = '456' arr[2] = '789' arr[3] = '963' arr[4] = '852'
2: 简洁方式:
var arr1 = new Array('阿拉斯加','哈士奇','萨摩耶')
console.log(arr1)
3: 字面:字面上的含义([]代表数组)
var arr2 = [] console.log(arr2)var arr3 = ['小陀螺','小骆驼','小摩托'] console.log(arr3)
增删改查
// 定义属性 var arr = ['阿拉斯加','哈士奇','萨摩耶']// 查询(根据索引获取元素 console.log(arr[2])// 新增-柯基 arr[3] = '柯基' console.log(arr)// 5 arr[5] = '泰迪' console.log(arr) console.log(arr[4]) // undefined,表示这个数组元素没有被赋值// 修改 arr[1] = '藏獒'// 删除,删除后数组长度没发生改变,只不过该位置变成了空白.相当于该索引的元素离开了,但是房还在 delete arr[0] console.log(arr)// 结论,对数组的操作(增删改查),都跟索引相关
遍历
通过循环遍历.判断条件,<为本身数,<=减一
for(var i = 0;iarr.length 为数组的长度,最多取到长度-1,所以写为
求元素所在的索引
遍历并比较
// 源数组 var arr = [10, 7, 1, 12, 18]// 获取输入数据 var num = prompt('请输入要查找的元素')// 定义一个变量,接收元素的索引 var index = -1 /* 表示这个索引不存在 */// 遍历数组并比较 for(var i = 0;i二维数组
本质也是一个数组,里面的每一个元素都是一个一维数组
应用场景
1.有三个小组,每个小组三个成员,想保存所有学生的考试成绩。
var arr = [[90,89,88],[99,79,83],[100,87,85]]
2.如果我们想表示一个多边形(有很多点组成),每个点又包含经纬度信息
可以使用二维数组,将这些点存储起来。
var arr = [[30,110],[40,115],[80,90]]
for (var i = 0; i < arr.length; i++) {for (var j = 0; j < arr[i].length; j++) {console.log(arr[i][j])} } // 遍历二维数组,获取所有学生的成绩 for (var i = 0; i < arr.length; i++) {var innerArr = arr[i]// innerArr.length写成arr[i]也是一样的效果for (var j = 0; j < innerArr.length; j++) { document.write(innerArr[j] + ' ')// console.log(arr[i][j])max = max < arr[i][j] ? arr[i][j] : max}document.write('
') } console.log(`最高成绩为${max}`)函数
函数的来源和入门
传统方式弊端:1.代码不简洁,冗余
2.没有技术含量
3.不利于修改代码和后期维护,不能复用
解决方式:使用函数
函数概念:封装了一段具有特定功能的代码块
函数使用:先定义
function 函数名(){
函数体
}
再调用:
函数名()
function sumOneToX(x) {var sum = 0var x = +prompt('请输入想要加和的数')for(var i=1;i<=x;i++){sum += i}document.write(`加和为${sum}`) }sumOneToX()弊端:一个写死的函数没法做别的用处,想用做别的用处,可以借助函数的参数来实现。
函数的参数
参数:相当于一个媒介,调用者可以通过参数将要操作的数据传递到函数内部,进行操作
就可以提高程序的通用性和可扩展性(相当于一个占位符)
参数可以提示调用者,想要执行这个程序,必须要传对应的参数
做法:将函数中一些变化的数据,提出来,放在()里
function sumOneToX(min,max) {var sum = 0var x = +prompt('请输入想要加和的数')for(var i=min;i<=max;i++){sum += i}document.write(`加和为${sum}`) } sumOneToX(1,100)参数分类
形式参数:写在函数定义语句中的()里面,就是占位符
function sumOneToX(min,max)
实际参数:写在函数调用语句中,里面写的具体数值
sumOneToX(1,100)
弊端:程序调用完之后,调用者无法拿到函数调用完后的结果,就会无法进行下一步操作
这种写法拿不到最终的结果
代码无法拿到结果,需要借助函数的返回值
之前:直接打印结果,调用者无法拿到计算的结果
解决:通过return关键字,将操作结果返回给调用者
function minMax(num1,num2) {return num1 > num2 ? num1 : num2 } // var answer = minMax(13,24) var num1 = +prompt('请输入第1个数') var num2 = +prompt('请输入第2个数')var answer = minMax(num1,num2) console.log(answer)// 拿answer进行判断 if (answer % 2 == 0) {console.log('结果是偶数') } else {console.log('结果是奇数') }function runNian(year) {return (year%4==0 && year%100!=0) || (year%400==0) }// 使用 var year = +prompt('请输入一个年份')var res = runNian(year) // 可以删掉== true,直接使用if判断 if(res == true){document.write(`${year}是闰年`) }else{document.write(`${year}是平年`) }function shuZuMax(arr){var max = arr[0]for(var i = 1;imax){max = arr[i]}}return max } var arr = [10,20,5,60,48] var Max = shuZuMax(arr) // 参数可以传整个数组,可以传数组名 console.log(Max) 命名函数:有名字的函数
调用:使用函数名调用,有参数就给,有返回值就接收
匿名函数:没有名字的函数
调用:通常会使用一个变量来接收,通过变量名调用,
函数注意事项
1.如果函数没有显示的调用return,函数就没有返回值,如果强行接收,接收的值就是undefined
2.函数名其实代表整个函数(类似数组名代表整个数组,他们都是对象类型)
3.如果函数的实际参数小于形式参数,没有被赋值的形式参数值是undefined
return
1.将结果返回给调用者
2.用于结束函数,不执行后面的代码——如判断数据健壮性时
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
