声明式函数
使用function这个关键字来声明一个函数
语法:
function fn() {
//一段代码
}
function:声明函数的关键字,表示接下来是一个函数了
fn:函数的名字,我们自己定义的(遵循变量名的命名规则和命名规范)
():必须写,是用来放参数的位置
{}:就是我们用来放一段代码的位置(也就是我们刚才说的“盒子”)
赋值式函数
其实就是和我们使用
var关键字是一个道理了
首先使用var定义一个变量,把一 个函数当作值直接赋值给这个变量
语法:
var fn = function () {
//一段代码
}
不需要在function后面书写函数的名字了,因为在前面已经有了
函数调用阶段
就是让盒子里面的代码执行一下
让函数执行
两种定义函数的方式不同,但是调用函数的方式都以一样的
调用一个函数——>直接写函数名()
//声明式函数
function fn() {
console.log("我是fn函数)
}
//调用函数
fn()
//赋值式函数
var fn2 = function () {
console.log("我是fn2函数)
//调用函数
fn()
注意:定义完一个函数以后,如果没有函数调用,那么写在{}里面的代码没有
意义,只有调用以后才会执行
命名函数和匿名函数的区别
调用上的区别——虽然两种定义方式的调用都是一样的, 但是还是有一些区别的
声明式(命名)函数:调用可以在定义之前或者定义之后——命名函数在创建的时候就声明了
//可以调用
fn()
//声明式函数
function fn() {
console.log('我是fn函数)
//可以调用
fn()
赋值式(匿名)函数:调用只能在定义之后一匿名函数是先设置一 个变量来接收,将函数的具体实现赋值给变量一相关于定义了变量, 而变量都要在定义
之后使用的。
//会报错
fn()
//赋值式函数
var fn = function () {
console.log('我是fn函数')
//可以调用
fn()
实参和形参
形参:如果没有调用的时候,只是一个形式上的变量,不是一个具体的值。
并且形参只能在函数的内部使用,不能再函数之外使用
实参:就是我们实际所给予的值,当在调用函数时,会把实参传递给形参,让他在
函数中操作,如 fn(实参)
return返回值:
功能:
1.返回函数中的结果,返回到调用函数的位置上
2、中断函数(结束函数) ,不会在执行return后面的代码
闭包函数
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式 就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量, 利用闭包可以突破作用链域
闭包的特性:
函数内再嵌套函数
内部函数可以引用外层的参数和变量
参数和变量不会被垃圾回收机制回收
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量 的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内 存泄露。