• 什么是函数:也称为方法,是指具有特定功能的模块
• 函数的分类:
• 从定义角度分:内置函数、自定义函数
• 内置函数:所谓内置函数就是指JS自带的函数,不需要重写定义,直接使用就可以alert()、prompt()、Number()、parseInt()、parseFloat()、isNaN()
• 自定义函数:就是指用户根据实际需求自己编写的函数
• 从参数角度分:有参函数、无参函数
• 从返回值角度分:有返回值函数、无返回值函数
• 特殊:匿名函数、递归函数
• 定义函数的一般格式(完整格式)
function 函数名(参数列表) {
函数体;
return 返回值;
}
• 定义函数时注意事项
• 关键字function必需是小写的,且不可以省略
• 函数名的命名规则必需符合标识符的命名规则
• 参数列表:所谓参数列表就是指形参列表,需要注意的是形参列表在定义时不可以加var,另外可以有多个形参,如果有多个形参参数间需要用逗号分隔
• 如果没有参数列表,即定义了一个无参函数,那么小括号不可以省略,且要注意小括号后面不可以加分号
• 大括号中包含的是函数的函数体,所谓函数体就是指能够执行特定功能的语句,可以是一条,也可以是多条,如果是多条必须用大括号括起来,如果一条也没有,那么这样的函数我么称之为空函数,空函数的作用就是用来在程序中占位
• 无参无返回值函数的定义格式
function 函数名() {
函数体;
}
• 无参无返回值函数的调用格式
• 格式1:函数名();
• 格式2:通过事件驱动的形式调用函数<开始标签 onclick=”函数名()”></结束标签>
• 格式3:通过事件驱动的形式调用函数,在<script>标签中写上document.getElementById(“元素的ID”).onclick = 函数名;
• 函数的好处
• 结构清晰,利用维护
• 提升程序的可操控性
• 提升代码的复用性
• 提升内存的利用效率
• 有参函数的定义格式
function 函数名(参数1,参数2,参数3…) {
函数体;
}
• 有参函数的调用:
• 格式1:函数名(实参);
• 有参函数的注意事项
• 有参函数的参数分为实参和形参
• 形参:定义函数时所使用的参数就是形参,所谓形参其实就是用来接收具体数据的变量,话句话说形参必须是变量,形参可以有多个,参数间用逗号分隔
• 实参:调用函数时所使用的参数就是实参,所谓实参其实就是要用函数处理的具体数据,实参可以有多个,参数间需要用逗号分隔
• 形参是一个存储空间,形参只有在函数被调用时系统参会为其分配空间,当函数运行结束后,形参所占空间会被释放
• 形参和实参个数上理论上要求一一对应,但是在JS中这方面已经不重要了,换句话说实参和形参的个数可以不匹配
• 实参和形参在传递数据时是单向传递的,即有实参传递给形参,不可以有形参传递给实参
• 实参和形参在传递数据时位置是一一对应
• 有返回值函数:所谓返回值就是一个函数运行后所得到的结果,并将结果返回给调用者,那么返回回来的这个值就是返回值,注意返回值需要用return关键字返回,
格式为return 返回值;
• 有返回值函数的注意事项
• 函数可以有多个return,但是最终只能执行一个,因为return语句具有结束函数的功能
• return后面的返回值可以是常量、变量、表达式
• 所有函数其实都有return语句,包含无返回值函数
• 匿名函数:函数没有函数名,格式如下
function(){
函数体
}
• 匿名函数的调用格式1,将整个函数赋值给一个变量,如何通过该变量进行函数的调用如var fn = function() {alert(“hello”);};调用时,可以用如下形式变量名(),如:fn();
• 匿名函数的调用格式2,将整个函数赋值给一个事件,通过该事件调用该函数,如document.getElementById(“元素的id”).onclick = function() {alert(“hello”);};需要注意该种形式适用于无参函数,如果是有参函数可以用下面的形式(function(num){alert(num)})(实参);
• 变量的作用域:所谓变量的作用域就是变量起作用的范围,根据作用域的不同变量可以分为两大类:全局变量、局部变量
• 全局变量:定义在函数外面的变量被称为全局变量,全局变量的作用域是整个页面
• 局部变量:定义在函数内部的变量被称为局部变量,局部变量的作用域是定义它的函数
• 变量作用域注意事项
• 如果全局变量和局部变量同名,那么全局变量默认是被屏蔽掉的,如果要使用全局变量,那么只需要在变量名前加window.因为所有全局变量都属于window对象
• 函数内部定义的变量,如果不加var,那么默认情况下该变量为全局变量
• 递归函数:函数自己调用自己