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

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

特殊函数

匿名函数

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
目录
相关文章
|
1月前
|
设计模式 Python
学习函数的参数传递和返回值
在编写函数时,不可避免地会出现一些错误。通过调试代码,查看参数的值在函数内部的变化以及返回值是否符合预期,有助于更好地理解参数传递和返回值的机制。
|
2月前
|
缓存
函数的定义、调用、箭头函数、闭包
函数的定义、调用、箭头函数、闭包
18 0
|
3月前
|
存储 自然语言处理 数据处理
有效的函数
有效的函数
21 0
|
7月前
|
安全 C++
函数参数传递
函数参数传递
|
6月前
|
C++
<iomanip>库中setw(),setfill()等函数的使用
<iomanip>库中setw(),setfill()等函数的使用
159 0
|
7月前
|
存储 Python
|
7月前
|
前端开发 JavaScript
Less的函数的介绍
Less的函数的介绍
66 0
|
JavaScript 前端开发
函数 定义,调用,传参,箭头函数、闭包
函数是一段可重复使用的代码块,可以接受参数(可选)并返回一个值(可选)。在JavaScript中,函数可以通过以下步骤进行定义、调用和传参。
|
监控 程序员 C语言