DAY4:函数(上)
第一节:
- 函数的概念及作用
概念:函数就是定义一次但是可以调用执行任意多次的JS代码块。
l 函数就是表示一个可以操作的行为动作
作用:提高代码的复用性、可读性等
l 将一个可以操作的行为动作定义好,可以在任何时候任意多次的重复操作这个行为而不需要编写重复的代码
l
- 函数的编写
javascript中通过function关键字来声明定义一个函数
function 函数名称() {
函数中要执行的代码;
}
l 函数定义好之后,函数中的代码在程序运行过程中不会执行;
l 通过函数名称调用函数,调用时执行函数中的代码;
l 通过函数的名称直接调用函数
- 事件的概念种类及作用
事件:就是发生的事情
事件驱动:就是发生了某件事情之后要处理的手段和过程
鼠标事件 |
|
onclick |
鼠标单击 |
ondblclick |
鼠标双击 |
onmousedown |
鼠标按键按下 |
onmouseup |
鼠标按键抬起 |
onmousemove |
鼠标在元素上移动 |
onmouseout |
鼠标移出 |
Onmouseenter |
鼠标移入 |
键盘事件 |
|
Onkeydown |
键盘按键按下 |
Onkeyup |
键盘按键抬起 |
onkeypress |
键盘按键按住 |
- 事件和函数的关系
- 函数和循环结合打印九九乘法表
- 函数的好处
- 参数的声明
function 函数名称(参数列表){
函数体中的代码;
}
- 参数的传递
第二节:应用
- 编写一个函数,计算两个数字的和、差、积、商
要求:使用传参的形式
f1(num1,num2,op){
}
F1(1,2,’+’)
- 编写一个函数,计算三个数字的大小,按从小到大顺序输出
F1(5,2,3) // 2 ,3 ,5
第三节:
- 函数的两种创建方式:声明式和赋值式
直接声明 |
function 函数名称() { 函数中要执行的代码; } |
赋值式声明 |
var x = function 函数名称() { 函数中要执行的代码; } |
- JS的编译和执行
- 变量的声明提升
l 函数中声明变量并且赋值,声明部分会提升到函数中的第一行,赋值部分在原来的位置不变
- 形参和实参
- return关键字
第四节:应用
- 编写任意个数字的求和、差、积、商的函数
- 编写生成4位数字验证码的函数,并生成10次,同时将结果存入数组
第五节:综合应用
- 编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数
比如:
计算0-3之间能组成的奇数个是01、21、03、13、23、31
0,1,2 , 3
2.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文;
DAY5:函数(下)
第一节:精讲
- 作用域
所谓作用域,其实就是指某个变量有效可用的范围
- 局部作用域和全局作用域 (全局变量和局部变量)
- 递归函数
递归的概念
l 所谓递归,就是函数自己执行过程中,调用自己本身的方式。
F(n)=F(n-1)+n = F(n-2)+n-1 +n= F(n-3)+n-2 + n-1 + n ...... F(1)+2+3+4.... n-1 + n |
l 递归,是为了使用最简单的代码解决相似的、重复处理的流程出现的。
递归的步骤:
//1.先找临界值,即无需计算 就能获取的值
//2.找本次 和上一次的关系
//3.假设 当前函数已经可以使用了,调用自身计算上一次的运行结果,再写出本次运行结果 即可
//求1-n之间的和
//1 ........ 100
// 1- 1000
//1. 临界值1
// F(100)= F(99)+100= F(98)+99+100 = F(1)+2+3+4.....+99+100
//2. sum(n-1)+n = sum(n)
function sum1(n) {
//临界值
if(n==1){
return 1;
}
return sum1(n-1)+n;
}
第二节:应用
- 利用递归求100的阶乘
- 利用递归求斐波那契数列
指的是这样一个数列:0,1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
这个数列从第3项开始,每一项都等于前两项之和。
当n > 3 时,每项的值为前两项之和。即当n = 1 和 n = 2 时分别取值为0、1
- 利用递归求两个数字的最大公约
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。
几个整数,公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数一般记为(12,16)=4
辗转相除法:
辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
这就是辗转相除法的原理。
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
可以写成右边的格式。
用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。
M = n;
N = r
f(m,n f(n,r)
第三节:
- 构造函数及对象类型(了解)
第四节:应用
- 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数求/1+1/3+...+1/n
- 使用函数完成任意数字阶乘的计算
要求:页面输入任意数字,点击按钮后计算阶乘
练习
常见事件与函数的结合(可将信息打印在控制台)