特殊函数:匿名函数的两种应用(①回调函数②自调函数)

简介: 特殊函数:匿名函数的两种应用(①回调函数②自调函数)

特殊函数

匿名函数

JavaScript可以将函数作为数据使用。作为函数本体,它像普通的数据一样,不一定要有名字。默认名字的函数被称之为匿名函数。如下示例:

function(a){return a;}

匿名函数的两种用法:

可以将匿名函数作为参数传递给其他函数。这样,接收方函数就能利用所传递的函数来完成某些事情。

可以定义某个匿名函数来执行某些一次性任务。

/*
    匿名函数 - 表示没有名称的函数
    * 问题 - JavaScript语法并不支持匿名函数
    * 应用
        * 回调函数 - 将一个函数作为另一个函数的参数使用,作为参数的函数
        * 自调函数 - 函数调用自身(定义即调用的函数)
    */
//直接运行匿名函数时报错
function () {
    console.log('today is a sunny day')
}

1、回调函数

当一个函数作为参数传递给另一个函数时,作为参数的函数被称之为回调函数。

(1)不带参数的回调函数

// 函数n作为函数fn的参数->回调函数
var n = function () {
    console.log('n');
}
function fn(v) {
    v();
}
fn(n);
// 匿名回调函数 - 不占用全局命名空间(内存)
fn(function () {console.log('n')})

解析图如下所示:

(2)带参数的回调函数

// 函数n作为函数fn的参数->回调函数
var n = function (w) {
    console.log(w);
}
function fn(v) {
    v('function');
}
fn(n);//function
// 匿名回调函数 - 不占用全局命名空间(内存)
fn(function (w) {console.log(w)})//function

解析图如下所示:


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHMHpMUl-1603723317256)(http://lk.wangshmily.top/PicGo/带参数的回调函数.png)]

2、自调函数

概念:

所谓自调函数就是在定义函数后自行调用。


作用:

用于执行一次性的逻辑任务。


应用:

作为整体逻辑代码外层结构。


语法结构:

第一个括号用来定义函数

第二个括号用来调用函数

如下代码展示了两种写法:


第一种:

// 1、语法结构
//(定义函数)(调用函数)
(function (v) {
    var w = 100;//局部变量
    console.log('this is '+ v);
})('function');

第二种

// 2、表达式方式
(function (v) {
    var w = 100;//局部变量
    console.log('this is '+ v);
}('function'));

注:自调函数写法不止这两种,此处举例两种比较常用的写法。

拓展:

有个问题:自调函数定义时写上函数名会不会报错?调用会不会报错?

如下代码解释该问题:

//1、定义时加上函数名,输出结果不变,没影响
(function fn() {
    console.log('js')
})()//输出 js
//2、定义时加上函数名,使用函数名调用,输出报错,有影响。
(function fn() {
    console.log('js')
})()
// fn(); 报错,报错信息:ReferenceError: fn is not defined
目录
相关文章
|
6月前
|
存储 编译器 C++
13函数
13函数
24 0
|
3月前
|
存储 JavaScript 前端开发
使用函数
【8月更文挑战第26天】
13 1
|
5月前
|
算法 程序员 编译器
函数(2)
函数(2)
21 0
|
5月前
|
C++
<iomanip>库中setw(),setfill()等函数的使用
<iomanip>库中setw(),setfill()等函数的使用
117 0
|
6月前
|
程序员 C语言 Python
函数—C(上)
函数—C(上)
52 0
|
6月前
函数(三)
函数(三)
44 0
|
11月前
|
编译器 C语言
对函数的剖析一
对函数的剖析一
38 0
|
编译器
函函函函函函函函函函函数——two
函函函函函函函函函函函数——two
92 0
函函函函函函函函函函函数——two
|
编译器 C语言
C 中的函数
C 中的函数
|
算法 编译器 C语言
函数部分的详细讲解
函数部分的详细讲解