JS函数的应用
了解函数
函数是我们的一个数据类型, 和数学的一次函数之类的玩意没有关系
函数是我们接触的第一个复杂数据类型
函数的创建
Ps:在声明函数时,函数内部代码不会自行执行,只有被调用时,代码才会执行。
-
声明式函数
function name(){}
name是给函数自定义的名字(命名规则和规范同变量名)
()存参数
{} 存代码 -
赋值式函数
语法:var name = funciton (){}
var :定义变量的关键字
name: 给函数自定义的名字(命名规则和规范同变量名)
=:赋值
funciton:表示一个函数
()存参数
{}存代码
函数的调用
1.直接调用
当你定义好一个函数以后
如果你想让它内部执行
直接写 -> 函数名()
函数名:你要让哪一个空间里面的代码执行
():调用的意思
注意: 定义完一个函数以后,如果没有函数调用,那么写在{}里的代码没有意义,只有调用,才会执行。
调用上的差别
虽然两种定义方式的调用都是一样的,但还是有一些区别的
声明函数: 调用可以在定义之前或者定义之后
函数的参数(重点)
-1 . 形参
- 就是在函数内部可以使用的变量,在函数外部不可使用
- 每写一个单词,就相当于在函数内部定义一个可以使用的变量(遵循变量名的命名规则和命名规范)
- 多个单词之间用,隔开
- 如果只有形参的话,那么在函数内部使用的值的变量是没有值的,也就是undefined
- 行参的值是在函数调用的时候由实参决定的。
- 实参
在函数调用的时候给形参赋值的
在调用的时候是给一个实际的内容
参数的个数关系
-
形参比实参少
-
因为是按照顺序一一对应的。
-
形参少就会拿不到实参给的值,所以在函数内部就没法用到这个值
行参比实参多
-
因为是按照顺序一一对应的
-
所以多出来的行参就是没有值的,就是
undefined
-
函数的return(重点)
return
返回的意思,其实就是给函数一个 返回值 和 终断函数
终断函数
-
当我开始执行函数以后,函数内部的代码就会从上到下的依次执行
-
必须要等到函数内的代码执行完毕
-
而
return
关键字就是可以在函数中间的位置停掉,让后面的代码不在继续执行 -
返回值
-
函数调用本身也是一个表达式,表达式就应该有一个值出现
-
现在的函数执行完毕之后,是不会有结果出现的
-
return
关键字就是可以给函数执行完毕一个结果 -
-
我们可以在函数内部使用
return
关键把任何内容当作这个函数运行后的结果
函数的优点
- 函数就是对一段代码的封装,在我们想调用的时候调用
- 函数的几个优点
- 封装代码,使代码更加简洁
- 复用,在重复功能的时候直接调用就好
- 代码执行时机,随时可以在我们想要执行的时候执行
函数argments
函数内部的一个特殊的变量, arguments
在每一个函数内部, 都有一个天生的变量
不需要我们取定义, 直接就能拿来使用
这个变量叫做 arguments
表示所有实参的集合
详解 arguments
会把所有的实参按照从左到右的顺序依次排好
给每一个实参一个编号(索引 / 下标)
这个编号(索引 / 下标) 是从 0 开始的, 依次递增
当你需要获取到这里面的某一个的时候
你只要写 arguments[编号] 就能得到某一个准确的值
arguments.length
表示 arguments 这个集合的长度, 也就是里面有多少个数据
值是一个 number 数据类型的数字
如果你想得到这个属性就写 arguments.length
使用循环遍历整个 arguments 获取到每一个数据
因为 arguments 的索引(下标) 是按照从 0 开始依次叠加的顺序
我们的循环刚好也可以给我提供一组有规律的数字
所以我们可以使用循环的方式来遍历 arguments
循环遍历的时候为什么要小于 length
当 length === 5 的时候, 我们要的索引数字是 0 1 2 3 4
for (var i = 0; i < 5; i++) {} 得到的 i 分别时 0 1 2 3 4
当 length === 7 的时候, 我们要的索引数字是 0 1 2 3 4 5 6
for (var i = 0; i < 7; i++) {} 得到的 i 分别是 0 1 2 3 4 5 6
什么时候使用 arguments 什么时候使用形参
因为函数是我们提前定义好的, 为了更好的书写代码, 为了以后多次调用
当我们定义函数的时候, 我就能确定以后我使用的时候的实参的个数
我们推荐使用形参的方式来获取, 因为方便
当我们定义函数的时候, 我不能确定以后我使用的时候的实参的个数
我们推荐使用 arguments 的形式来获取, 因为灵活