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;i 

arr.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.用于结束函数,不执行后面的代码——如判断数据健壮性时


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部