一 函数的概述:
函数是一种方法,在我们编写代码中为了能够简化代码,实现一段代码能够反复的调用,使用关键字“function”定义的函数。
二 函数的生命方式(函数的命名):
在函数命名中有三种方法:
(1)利用关键字“function”命名,其声明方式为:function add(){}.
(2)利用var关键字声明,声明方式为var add = function(){}。但是在使用的时候我们要先声明后调用。
(3)第三种方式是通过构造函数来声明。var fn = new function(“a”,“b”).
注意:注意函数声明中的覆盖,后声明的函数会覆盖前面声明的函数。
三 函数的返回值:
每一个函数都有一个返回值,通过return来返回。如若未设置返回值则会默认返回undifiend。
四 函数的作用域:
作用域规定了在某些范围内才能够生效。作用域分为全局作用域,函数作用域,局部作用域,且全局变量不能访问函数作用域和局部作用域,局部作用域可以访问函数作用域和全局作用域,函数可以访问全局作用域。
无 函数递归:
函数自身调用自己就叫做递归,需要注意的是要设置结束值,以免陷入死循环。
六 匿名函数
匿名函数不需要任何的调用,可以立即执行。
七 将一个函数作为另一个函数的参数就是回调函数,一般用于函数的收尾或者不同结果的表现。
八 函数规范写法和闭包以及let块级作用域
函数的规范写法应该只通过参数和返回值和外部进行交流,尽量少用通过变量获取的方法与外部进行交流。闭包则是我们无法通过外部获取函数内部的变量的时候则要采取闭包的方法,一般如果在函数A里面有一个变量a,我们就需要在函数内部创建一个新的函数B,通过return返回变量a。
在我们平时的使用中应该尽量减少闭包的使用,因为如果大量使用闭包会降低浏览器的性能。
在循环变量中由于js自身的变量提升会导致var定义的变量会导致获取的值不准确,而使用let关键字就不会再进行变量提升。