目录
1. 现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出
4. 有一个存储两个数的数组[3,6]写程序交换数组元素,输出[6,3]
5.创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59封装到函数里
9.求s = a + aa + aaa + aaaa+….+aa...a的值,其中a是一个数字
10.创建一个对象,num学号,sex性别,grade年级,score分数,name名字,并打印。做添加一个年龄属性和删除年龄属性的操作打印输出到界面
11.入职薪水10K/月,每年涨幅5%,50年后工资多少?用递归
1.作用域
定义:
一个变量可以起作用的范围【不是在所有地方都可以使用,而这个变量的使用范围就是作用域】
作用域的两种类型:
1.全局作用域
全局作用域是最大的作用域
在全局作用域中定义的变量可以在任何地方使用
页面打开的时候,浏览器会自动给我们生成一个全局作用域 window
这个作用域会一直存在,直到页面关闭就销毁了
在函数最外层,整个代码在全局起作用
2.局部作用域
局部作用域就是在全局作用域下面又开辟出来的一个相对小一些的作用域
在局部作用域中定义的变量只能在这个局部作用域内部使用
在函数体中起作用
作用:
有了作用域以后,变量就有了使用范围,也就有了使用的规则
2.变量使用规则:
1.访问规则
首先在自己的作用域内查找 ——>上一级作用域查找——>……——>全局作用域
如果在全局作用域都未找到,那么就会报错
2.赋值规则
首先在自己的作用域内查找 ——>上一级作用域查找——>……——>全局作用域
如果在全局作用域都未找到,不会报错,会自动把这个变量定义为全局变量,再给他赋值
3.作用域链
变量访问或者赋值时的查找机制->先在自己的作用域查找,没有找到就一层一层的向上查找,直到最外层全局作用域,这种层层的查找关系,就叫做作用域链。
4.递归函数:
定义:
函数自身调用自身,这样的函数称为递归
注意:
要有递归结束的条件
改变递归条件的代码
作用:
后面结果由前面推导而来,如果可以采用递归简化实现
5.对象
1.如何理解
现实生活:对象<=>具体的一个事物 对象通过行为和特征去区分
软件世界:对象<=>多个属性:属性值组成 对象通过属性和方法区分
2.对象创建的两种方式
1.字面量
var obj={} //创建空对象
var obj={name:"wuyuling",age:18}//创建有内容的对象
2.构造函数的方式创建对象
var obj=new Object()//创建空对象
obj.name="Amy"//这种方式只能添加内容
3.数据类型--复杂数据类型
4.访问对象属性
对象.属性名
例:var obj={name:"lucy"}
obj.name
5.修改对象属性
obj.name='machal' //直接赋值改变
6.删除对象属性
delete obj.name //把obj对象里面的name属性删除了
7.添加对象属性
obj.age=18 //现在obj对象新增一个属性为age 属性值为18
8.遍历对象 【for-in】
for(var key in obj){
//控制台打印出key对应的是obj里面的属性
//按顺序一个一个打印出的
}
9.访问对象属性值,属性名是变量的情况
var _age='age'
obj[_age]=obj[age]
//如果用obj._age会报错哦!!!!!
遍历对象的属性值时就会用到
for(var key in obj){
console.log(key,obj[key])
}
10.对象的作用
用来存储键值对的集合
6.数组
1.定义:一系列有序数据的集合
通俗的说就是把一些数据放在一个盒子里面,按照顺序排好,这个东西就是一个数组,存储着一些数据的集合
2.数据类型
复杂数据类型
3.创建数组的两种方式
1.字面量创建一个数组
var arr=[]//创建空数组
var arr=[100,200,300]//有内容的数组
2.内置构造函数创建数组
var arr=new Array()//创建空数组
var arr=new Array(6)//创建元素个数为6的数组
var arr=new Arrary(100,200,300)//创建有内容的数组
4.数组的索引【也叫做下标】
是指一个数据在数组里面排在第几个的位置。索引号从0开始(在所有语言里面)
5.访问数组元素
arr[索引号]//通过索引号访问
6.数组长度(元素个数)
arr.length
7.遍历数组
因为数组的索引就可以获取数组中的内容,数组的索引又是按照0~n顺序排列,我们就可以使用for循环来循环数组【将for里面的变量设置成从0~n顺序增加】。这种行为叫遍历
案例:
1. 现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出
2. 求5名学生总成绩?
3. 求大于平均分的学生成绩?
var chinese=[98,87,95,89,77]
var sum=0//总成绩
for(var i=0;i<chinese.length;i++){
document.write(chinese[i]+" ")
sum+=chinese[i]
}
var avg
avg=sum/chinese.length
document.write("<br>")
document.write(sum+"<br>")
document.write(avg+"<br>")
4. 有一个存储两个数的数组[3,6]写程序交换数组元素,输出[6,3]
var arr=[3,6]
var temp
function swaps(){
temp=arr[0]
arr[0]=arr[1]
arr[1]=temp
document.write(arr+"<br>")
}
swaps()
5.创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59封装到函数里
var mathgrade = [89,78,90,99,67,59]
function printarr() {
for(var i=0;i<mathgrade.length;i++){
document.write(mathgrade[i]+" ")
}
}
printarr()
document.write("<br>")
6.求所有学生中分数最高的学生成绩,打印输出到界面
var max=mathgrade[0]
function arrmax() {
for(var i=1;i<mathgrade.length;i++){
if (max<mathgrade[i]) {
max=mathgrade[i]
}
}
document.write(max+"<br> ")
}
arrmax()
7.求所有学生中分数最低学生成绩,打印输出到界面
var min=mathgrade[0]
function arrmin() {
for(var i=1;i<mathgrade.length;i++){
if (min>mathgrade[i]) {
max=mathgrade
}
}
document.write(min+"<br> ")
}
arrmin()
8.求不及格的学生有几个,打印输出到界面
function notStandard() {
var count=0
for(var i=1;i<mathgrade.length;i++){
if (60>mathgrade[i]) {
count++
document.write(mathgrade[i]+"")
}
}
document.write("<br> "+count)
}
notStandard()
9.求s = a + aa + aaa + aaaa+….+aa...a的值,其中a是一个数字
var a=3
var total=0
function sum(a=3) {
b=a
for(var i=0;i<a;i++){
total+=b
b=b*10+a
}
return total
}
document.write(sum(3)+"<br>")
10.创建一个对象,num学号,sex性别,grade年级,score分数,name名字,并打印。做添加一个年龄属性和删除年龄属性的操作打印输出到界面
var student={
num:'137',
sex:'女',
grade:'大四',
score:99,
name:'rose'
}
// document.write(student.grade)
for(var key in student){
document.write("属性名:",key," 属性值:"+(student[key]))
document.write("<br>")
}
console.log(student.grade)
// 添加属性age
student.age=18
for(var key in student){
document.write("属性名:",key," 属性值:"+(student[key]))
document.write("<br>")
}
// 删除属性age
delete student.age
for(var key in student){
document.write("属性名:",key," 属性值:"+(student[key]))
document.write("<br>")
}
11.入职薪水10K/月,每年涨幅5%,50年后工资多少?用递归
// 薪水
function sumsalary(salary=0,year) {
if(year==1)
{
return salary
}
return sumsalary(salary,year-1)*1.05
}
var sum=sumsalary(120000,50)
document.write("年薪为10k,涨幅为0.05,50年后,薪水为 :",sum+"<br>")
12.斐波拉契数列
// 斐波拉契数列
function feibo(n) {
if (n==1 || n==2) {
return 1
}
return feibo(n-2)+feibo(n-1)
}
document.write("斐波拉契数列: 当n==8时值为:",feibo(8),"<br>")
document.write("前八项:")
for(var i=1;i<=8;i++){
document.write(feibo(i)+" ")
}