1.函数的介绍
一段代码的的封装
代码需要重复的用,而又不需要立即用,什么时候需要用就用
调用才会执行,不调用不会执行
2.函数的定义及使用
定义函数:function 函数名(){ 函数体 }
调用函数:函数名();
注意:定义函数时函数体不执行,只有调用函数时函数体才执行,意思就是才执行函数体中的代码
3.函数传参
形参:定义函数时括号里的参数,形式上的参数
实参:调用函数时括号里的参数,实际上的参数
参数可以有多个,但实参和形参要一一对应,中间用,分割
传参的好处:极大地提高了函数的灵活性
4.函数的返回值
return返回数据
return返回值,返回到调用函数的位置
注意:一个函数只能有一个return,如果有多个return的话,只执行第一个return
return后面如果有代码,不执行后面的代码,立即跳出函数
如果return没有数据,返回的值是undefined
如果不写return,函数默认的返回值是undefined,函数调用代码执行完之后
5.作用域
全局作用域:函数外边的
局部作用域:函数内部
块级作用域:只要是大括号中的都是块级作用域,比如for、if、{}中的
变量的作用域:全局变量: 在全局作用域中定义的变量
局部变量:在当前作用域中定义的变量,函数内部
块级变量:在当前块级定义的变量,就是括号之内的
全局变量哪个作用域都可以有效,局部变量只有当前作用域使用有效,块级变量只有当前块级作用域有效
定义变量的时候,如果没有加声明let,不管在哪个作用域,都是全局变量
函数的参数可以做局部变量看, 函数可以嵌套 全局函数和局部函数
函数在调用执行的时候会开辟新的作用域空间,函数执行完之后会销毁自己开辟的作用域
6.作用域链
作用域链:作用域串联起来的链状结构 就近原则(上级作用域)查找变量最终的值
作用:提供查找变量的机制
上一级上一级的找,如果找到全局变量没有的话就会报错
7.匿名函数
定义:function () { }
函数是一种数据,也是一种值,所以也可以把它赋值给变量
调用:赋值给一个变量,例如 let r = function () { };r(); let r = function () { };就是函数表达式
立即执行函数、自调用函数:;(function (){ })();或;(function (){ } ());只执行一次,因为它定义完就立即执行了 加分号是因为如果上一句没写分号的话会认为是拼接 作用:防止变量污染
匿名函数传参和具名函数一样,往括号里写形参和实参即可