1 函数的特殊参数 :arguments 是一个伪数组(类数组)
可以看做是一个盒子,盒子里存放着我们传递进来的参数
每一个参数都存在自己的下标,是按照顺序排列的,下标从0开始,到arguments.length-1结束
arguments.length是参数的个数
2 函数的返回值:return 关键字,return关键字之后的所有程序都不执行
函数的类型:复杂数据类型
复杂数据类型在赋值的时候赋值的是一个地址
递归函数:函数内部调用函数本身
解决一些数学问题
作用域:一个变量的生效范围
变量:全局变量:在任何位置都可以使用,两个函数之间的通信
局部变量:在某一特定范围内才能使用,函数内部的变量都是局部变量
3 js分为两个阶段:词法分析和执行
词法分析:分析形象、分析变量声明、分析函数声明
如果函数内部没有变量的声明,则会向外查询
4 作用域链
函数内部的变量外部不能访问
函数在声明变量的时候一定要使用var关键字,如果没有var关键字在函数执行一次就会在全局生成一个全局变量,此时在函数的外部就可以使用这个变量
5 函数的提升
赋值式定义与变量的提升一样
声明式定义函数提升的是整个函数
6 自执行函数 IIFE
函数创建完成之后就可以执行,不需要调用
创建自执行函数 :(函数)()、(函数())、+函数()、-函数()、!函数()
如果函数变成自执行函数之后,就不能通过函数名去调用,可以不用给函数起名
没有名字的函数叫做匿名函数
应用点:赋值式定义
自执行函数
闭包函数