函数的用处:来实现高内聚低耦合,把共同需要的代码高度封装起来,以此减少重复代码,封装的函数只有调用才会执行。
函数名的命名规则与变量的命名规则一样,js中唯一能封闭作用域的就是函数
一:函数的声明和调用:
声明格式:
调用格式:函数名()
函数可调用多次:
实际运用都是在特定条件下调用函数来实现功能需求:
二:函数的强大之处:没给参数仅是减少代码耦合,要封装特定功能在代码块中,需要变量作为参数。
格式:【function 函数名(m), m是变量名不用var声明,括号内的变量默认用var声明,】
参数:
1.写变量名没赋值的用来占位的叫:形式参数
2.调用时 函数名(变量值),给定确切变量值来赋值给形式参数的变量值,叫实参。
3.实参比形参个数少,叫不定参。
实参比形参个数多,不报错,没意义。
注意:形参没写默认值,默认值为undefined
eg①:一个参数:
默认值为undefined
eg2:多个参数: 用逗号隔开
eg3:不定参:传递的实参与形式参数不等,那么传递的实参叫不定参。
二:
arguments:实参列表,接受一切实参,是类数组
使用方法:
arguments实参列表,下标从0开始计数
打印arguments,会打印出Argument对象,Argument类数组,下标:对应值
arguments的注意事项:
传不定参时,实参个数<形参个数,m(1) m(x,y)在函数内部给y赋值,arguments[1]仍为undefined;
实参个数==形参个数 m(1,2) m(x,y) 在函数内部改变y值,arguments[1]也跟着改变,
arguments获取的是实参,是实参列表,若形参接受到了实参,并在函数内部对传进的实参值做出改变,那arguments里对应的实参值也会发生改变
arguments.length代表实参列表长度
eg:
三:js中的函数与其他语言函数不同,会覆盖不会重载(根据形参不同,执行不同函数),可以模拟重载需要arguments实参列表
js 与 其他编程语言不同:
若是其它语言,上面两个函数名相同,参数不同的函数是不同的函数,在js中,只要函数名一样就是一样的函数,且后面的函数会覆盖前面的。
arguments获取的是实参,是实参列表,若形参接受到了实参,并在函数内部对传进的实参值做出改变,那arguments里对应的实参值也会发生改变
函数的模拟重载:根据实参列表长度来实现模拟重载。
1.
2.借助arguments.length与下标取值arguments[n]来实现函数重载
四:程序需要函数的结果,不仅仅是console.log()打印在控制台上,还需要函数结果进行下一步的运算。需要有个结果来代表函数,因此有return 函数的返回值这个概念。
函数吃进去的是实参,吐出的是return,变量=函数(),变量接受的是函数的return值
①:每个函数都有默认的返回值,默认的返回值是undefined
程序中用变量来接收return值进行下一步运算
var a = fn(); console.log(a) //undefined;console.log(a)//22
return 后面可接表达式,表达式里可用自定义变量以及参数,函数强大的体现:
②:return 做终止语句使用
一个函数通常只有一个return语句,含分支语句除外:
console语句中多次调用函数,打印出的值是return值取和:
补充:形参的长度
函数名.length即为形参的个数
开发必用:函数之间的相互调用:高层API 调用 低层API,借助返回值。