首页 web前端 js教程 JavaScript中什么是匿名函数?

JavaScript中什么是匿名函数?

Apr 28, 2018 am 11:21 AM
js 匿名函数

本篇文章将为各位介绍JavaScript中什么是匿名函数,希望看完本篇文章各位能对JavaScript中匿名函数的概念、使用有一定的认识。

JavaScript中什么是匿名函数?

JavaScript中什么是匿名函数?

在前端面试中面试官基本都会问到什么是匿名函数、什么是闭包函数。

本文就先来说一下什么是匿名函数。

匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的:

function do(){
  // 执行代码  
};
// 调用
do();
登录后复制

这种写法是定义了一个名为do的函数,并通过函数名称进行调用。

那如果没有名字是什么样子的啊?

function () {
   // 执行代码   
 };
登录后复制

这种写法在编译的时候会报错:

Uncaught SyntaxError: Unexpected token (
登录后复制

这是为什么呢?原来时因为浏览器在进行语法分析的时候发现这个函数根本没法执行。

那要为什么还要匿名函数呢?在编程语言中如果又个编码方式那这种编码方式肯定是能正常运行的,那该如何让匿名函数跑起来呢?再看下面的例子:

var do = function () {  // 执行代码  }do();
登录后复制

这种函数大家肯定都知道,其实这种写法就是将匿名函数复制为变量do,再通过变量名执行函数。

(function(){   // 执行代码 
  console.log("打印成功");
})();
登录后复制

上面代码是什么意思呢?

可以先把上面的代码分几个部分:

第一部分是括号里面的匿名函数,第二部分是加上括号的匿名函数,第三部分带上最后面执行用的括号。

匿名函数在括号内部可以看成是将匿名函数当成是一个变量,再通过括号进行执行。

(function () {
   // 执行代码 
})();

// 相当于
var do = function() {
   // 执行代码  
};

do();
登录后复制

其实向上面这种匿名函数的写法在很多地方都有用到,这种又叫自执行函数,像JQuery 等一些工具包都会用这种写法,自执行函数有哪些优点呢?

// 定义一个全局变量a
var a = 1;

(function() {
  // 在自执行函数中也创建一个变量a
  var a = 2;
   console.log(a);  // 2
})();

console.log(a); // 1
登录后复制

可以看到在自执行函数中打印出来的是2,而在自执行函数中打印出来的是1;

这是为什么?

因为在程序中有个名称叫做作用域,全局环境的作用域叫做全局作用域,函数中的作用域叫做函数作用域,而作用域是分层的,内部作用域中可以访问外部作用域中的变量,而外部作用域中却不可以访问内部作用域中的变量。

在内部作用域中访问变量会先在自己所在作用域中查找,如果找不到再在上一层作用域中进行查找,再找不到还会再往上查找,一直到找到全局作用域。这种一层一层的关系像链条一样所以被叫做作用域链。

再看上面代码:在自执行函数中console.log 函数访问了a变量,首先在自己所在的作用域中查找,找到了a变量,故输出了a的值2;全局环境中的console.log 函数也访问了a变量,由于外部作用域不能访问内部作用域,所以全局环境中访问的a变量只能在全局函环境中进行查找,所以输出了a的值1;

总结:自执行函数的优点是为了保证自执行函数中的变量不会受到其他环境的污染。

本文来自 js教程 栏目,欢迎学习!

以上是JavaScript中什么是匿名函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

推荐:优秀JS开源人脸检测识别项目 推荐:优秀JS开源人脸检测识别项目 Apr 03, 2024 am 11:55 AM

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

如何使用PHP和JS创建股票蜡烛图 如何使用PHP和JS创建股票蜡烛图 Dec 17, 2023 am 08:08 AM

如何使用PHP和JS创建股票蜡烛图股票蜡烛图是股票市场中常见的一种技术分析图形,通过绘制股票的开盘价、收盘价、最高价和最低价等数据,帮助投资者更直观地了解股票的价格波动情况。本文将教你如何使用PHP和JS创建股票蜡烛图,并附上具体的代码示例。一、准备工作在开始之前,我们需要准备以下环境:1.一台运行PHP的服务器2.一个支持HTML5和Canvas的浏览器3

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 Dec 17, 2023 pm 06:55 PM

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤,需要具体代码示例随着互联网和科技的快速发展,股票交易已经成为许多投资者的重要途径之一。而股票分析是投资者决策的重要一环,其中蜡烛图被广泛应用于技术分析中。学习如何使用PHP和JS绘制蜡烛图将为投资者提供更多直观的信息,帮助他们更好地做出决策。蜡烛图是一种以蜡烛形状来展示股票价格的技术图表。它展示了股票价格的

C++ 匿名函数的用法和特点 C++ 匿名函数的用法和特点 Apr 19, 2024 am 09:03 AM

匿名函数,又称lambda表达式,是一种不指定名称的函数,用于一次性使用或传递函数指针。特点有:匿名性、一次性使用、闭包、返回类型推断。实战中常用于排序或其他一次性函数调用。

PHP与JS开发技巧:掌握绘制股票蜡烛图的方法 PHP与JS开发技巧:掌握绘制股票蜡烛图的方法 Dec 18, 2023 pm 03:39 PM

随着互联网金融的迅速发展,股票投资已经成为了越来越多人的选择。而在股票交易中,蜡烛图是一种常用的技术分析方法,它能够显示股票价格的变化趋势,帮助投资者做出更加精准的决策。本文将通过介绍PHP和JS的开发技巧,带领读者了解如何绘制股票蜡烛图,并提供具体的代码示例。一、了解股票蜡烛图在介绍如何绘制股票蜡烛图之前,我们首先需要了解一下什么是蜡烛图。蜡烛图是由日本人

js和vue的关系 js和vue的关系 Mar 11, 2024 pm 05:21 PM

js和vue的关系:1、JS作为Web开发基石;2、Vue.js作为前端框架的崛起;3、JS与Vue的互补关系;4、JS与Vue的实践应用。

Golang 匿名函数可以返回多个值吗? Golang 匿名函数可以返回多个值吗? Apr 13, 2024 pm 04:09 PM

是的,Go语言中的匿名函数可以返回多个值。语法:func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//函数体}。使用方法:使用:=操作符接收返回值;使用return关键字返回多个值。

Python Lambda表达式:让编程变得更轻松 Python Lambda表达式:让编程变得更轻松 Feb 19, 2024 pm 09:54 PM

pythonLambda表达式是一个小的匿名函数,它可以将一个表达式存储在变量中并返回它的值。Lambda表达式通常用于执行简单的任务,这些任务可以通过编写一个单独的函数来完成,但Lambda表达式可以使代码更简洁和易读。Lambda表达式的语法如下:lambdaarguments:expressionarguments是Lambda表达式接收的参数列表,expression是Lambda表达式的体,它包含需要执行的代码。例如,以下Lambda表达式将两个数字相加并返回它们的和:lambdax,

See all articles