一、函数概述
函数是一段可以反复调用的代码块
1.1 获取随机数 Math.random( )
Math是一个内置对象,用于执行数学任务
1.2 Math.floor(x)是js内置方法,返回小于x的最大整数
二、自定义函数
2.1 函数的声明
2.1.1 用function 命令声明
1、关键词”function”;
2、函数名”print”,当然,这个名称是自己取的
3、函数名之后的小括号”()”
4、包裹函数体用的大括号”{}”,”{}”中可以没有代码
2.1.2 用函数表达式声明
这种写法将一个匿名函数值给变量。赋值等号右边为匿名函数,又称函数表达式。
在es6中函数表达式声明可以用箭头函数简写为:
let print = ( ) => {
console.log(“JavaScript 真有趣”)
};
2.2 函数声明的提升
2.2.1 采用function命令声明函数时,整个函数会被提升到代码头部。
但是用函数表达式声明函数的时候不存在函数声明提升,编译的时候就会报错。
两种声明方式的区别
1、结尾的大括号后是否需要加”;”
function 命令声明:结尾的大括号后不需要加”;”
函数表达式:结尾大括号后需要加”;”
2、有无声明提升
function 命令声明:有提升
函数表达式:没有提升
2.3 函数的重复声明
如果同一个函数被多次声明,后面的声明就会覆盖前面的声明
2.4 立即执行函数
当函数只使用一次时,通常使用IIFE(Immediately Invokable Function Expressions):
三、函数参数
3.1 用function命令声明生成六位随机数的函数:
3.2 用function命令声明生成四位随机数的函数:
3.3 函数根据我们给出的位数,生成合适的随机数
Math.pow(x, y)是js内置方法,求取x的y次幂。
3.4 多个参数
函数可以接受多个参数,多个参数以”,”分隔
调用函数时,需要按顺序传入数据
3.4.1 参数数量和传入数量不匹配
如果传入的数据个数超出了函数的参数:
结果没有影响,这是因为JavaScript允许传入任意个参数而不影响调用
传入的数据比定义的参数少也不会因为数量不匹配而报错
3.5 参数默认值
例子:
注意:我们是用等号 = 给参数赋默认值的
四、函数的返回值
js中函数可以分为”无返回值”和”有返回值”两种
Math.random()就是一个有返回值的内置函数,它会返回生成的随机数
在函数中遇到return语句,就直接返回return后面的那个表达式的值,后面即使还有语句,也不会被执行
五、内置函数——计时器1
延迟执行 setTimeout()
setTimeout 函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
setTimeout 函数基础语法如下:
setTimeout 函数接受两个参数,第一个参数 func | code 是将要推迟执行的函数名或者一段代码,第二个参数delay 是推迟执行的毫秒数
虽然setTimeout只能执行一次,但是我们可以用递归的方式来写计时器
接下里我们来写一个例子:
每隔一秒会执行一次代码,每次执行的代码要能够:
1、打印剩余秒数;
2、将秒数减一;
3、如果剩余秒数 > 0,则调用setTimeout 在一秒后重复上述的1、2、3,否则不再调用,并清除计时器,即计时结束;
回调函数
上面讲到的定时器 setTimeout 的第一个参数即”回调函数”,我们把函数指针(指向函数的指针变量) 作为参数传给setTimeout,当延时时间到了(触发条件达成)之后,就会通过函数指针调用函数,即调用回调函数。
除了定义器setTimeout 中会用到回调函数,其实在实际开发中,我们也常会遇到要用回调函数的时候。
六、内置函数——计时器2
无限调用 setInterval
setInterval函数基础语法如下:
现在我们用 setInterval 来实现隔1s打印数字1:
清除计时器:clearInterval(timer)