什么是函数
函数就是一段具有特定功能的代码块。
函数在js中地位非常高,属于一等公民函数作用
拆分代码,提高代码复用性,便于后期的维护和测试
函数的定义和调用
函数分类:
系统内置函数(如:parseInt()、parseFloat()、push()等)
程序员自定义函数:可以实现特定功能。
自定义函数有两种方式:
函数声明
函数表达式
函数声明:
函数表达式:
注意事项:
function它是定义函数的关键字 不可以省略。
函数名的命名规则与变量名是一样的,起的函数名一定要有意义,一看函数名就知道此函数实现什么功能
不能使用JS中的关键字和保留字作为函数名
如果函数名是由多个单词组成的,那么可以使用下划线法和小驼峰法
函数名严格区分大小写
函数名后面紧跟着一对小括号 这一对小括号不能省略,小括号后面紧跟着一对花括号, 这一对大括号不能省略
花括号里面是函数体
标识符:变量名和函数名就是标识符(token)。
案例:
实现两数之和。
实现1-100之间的和
上面两个函数虽然可以实现相应的功能。
缺点:仅能实现特定的功能,不够灵活,不具有扩展性。
解决办法:通过函数参数
函数的参数
为什么要有参数
上面代码带来的弊端:
虽然上面代码可以重复调用,但是只能计算1-100之间的值,不够灵活,扩展性不强!
若要计算1-200的和呢?怎么处理?,聪明的你肯定会想到改成即可。
若后面改需求了,要计算500-1000的和,怎么办? 那就把初始值i改为500, 条件改为i
弊端就是仅能实现特定的功能。
那么函数的参数就可以解决上面的问题。
函数参数分为形参和实参。
形参:在定义函数的时候声明的形式参数。
实参:调用函数时传入的实际参数。
形参仅仅起到一个占位的作用,具体是什么值,由调用者传递的实参决定。
语法格式:
示例:
若对应的形参没有传值,则默认值为undefined
什么时候要定义参数?
若函数内部使用到的值,是需要调用者来决定的,这类数据,我们就可以把它定义为一个形参 。
函数调用的时候在传递实参即可,这样的函数会更具有扩展性。
参数的默认值
若某个形参没有传递相应的实参,则值就会默认为undefined。
定义的时候我们可以给形参取个默认值:
注意:含有默认值的形参只能定义在最右边。函数的返回值 return
之前的函数案例中,我们都是直接在函数内部打印结果。打印的目的仅仅只是测试函数是否好使!
但是!!
在真实的项目开发中,我们肯定是需要得到函数的处理结果的,并把结果用在其他的地方。
如何得到函数的处理结果? 通过函数内部的关键字
return作用:
返回函数结果并终止函数的执行。
示例:
注意:
如果函数没有使用return返回值 ,则函数默认会返回
函数可以有多个return语句,但有且仅只会执行一个。因为return本质就是返回函数结果并终止函数的运行。
封装函数,实现两数之和:
封装函数,判断一个数是否是偶数
数组内置函数indexOf
arr.indexOf(value): 判断数组元素首次在数组中出现位置,存在返回其下标,否则返回 -1
arr.includes(value):判断数组元素是否存在数组中,存在返回true,否则返回false
函数内部属性arguments
arguments是函数内部的特殊属性。
arguments作用:获取所有的实参。
arguments是一个伪数组(类数组对象)。所谓伪数组就类似于真数组一样,可通过下标获取元素和通过length属性获取元素个数。也可for循环访问元素,但是不能调用真数组的方法(如:push)。
案例:求任意个数数字的和
获取函数定义的形参个数:
实现数组内置push方法
实现数组的lastIndexOf方法
领取专属 10元无门槛券
私享最新 技术干货