IIFE(Immediately Invoked Function Expression,立即执行函数表达式)是一个在定义后立即执行的JavaScript函数。它具有以下特点:

  1. 是一个匿名函数:通常情况下,IIFE 是一个没有名字的函数,称为匿名函数。
  2. 立即执行:这个函数在声明后立即被调用并执行,而无需手动调用。
  3. 创建局部作用域:它创建了一个新的函数作用域,从而使得在其中声明的变量不会污染全局作用域。

    IIFE 的基本语法如下:
(function() {
// 这里插入你要执行的代码
})();

这是一个典型的IIFE。首先,在外层使用一对圆括号将整个函数表达式括起来。这可以确保 JavaScript 引擎将其视为函数表达式,而非函数声明。接着,又使用一对圆括号立即调用这个函数。

在 IIFE 内部,你可以定义变量和函数,而它们只在这个函数作用域内可见。这有助于避免全局作用域中的命名冲突和变量污染。

例如:

(function() {
var a = 1;
console.log(a); // 输出 1
})();
console.log(a); // 抛出 ReferenceError,因为 'a' 在 IIFE 之外不可见

如果你需要向 IIFE 传递参数,可以将参数放在立即调用的圆括号内。例如:

(function(x, y) {
console.log(x + y); // 输出 3
})(1, 2);

总结一下,IIFE 是一个立即执行的匿名函数,用于创建局部作用域并避免全局作用域污染。这在较早版本的 JavaScript 中(如ES5)非常有用,因为当时还没有letconst来创建块级作用域。

javascript现代编程系列教程之二——IIFE的更多相关文章

  1. 高德地图 JavaScript API 开发系列教程(二)

    上节简单介绍高德地图JavaScript API及网页中基本地图展示.有了地图后我们可以用来做什么?有人说离我最近的超市在哪里,我怎么去?别急,这些功能我们后面都会慢慢实现.今天为大家详细讲解如何在地 ...

  2. webpack4 系列教程(十二):处理第三方JavaScript库

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...

  3. Java NIO系列教程(二) Channel通道介绍及FileChannel详解

    目录: <Java NIO系列教程(二) Channel> <Java NIO系列教程(三) Channel之Socket通道> Channel是一个通道,可以通过它读取和写入 ...

  4. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. Laravel大型项目系列教程(二)之用户管理

    Laravel大型项目系列教程(二) 一.前言 本节教程将大概实现用户的注册.修改个人信息.管理用户功能. 二.Let's go 1.创建用户注册视图 $ php artisan generate:v ...

  6. 屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

    此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不 ...

  7. 数据挖掘入门系列教程(二)之分类问题OneR算法

    数据挖掘入门系列教程(二)之分类问题OneR算法 数据挖掘入门系列博客:https://www.cnblogs.com/xiaohuiduan/category/1661541.html 项目地址:G ...

  8. 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

    我之前的文章 微信程序开发系列教程(一)开发环境搭建 介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能. 功能需求:当有微信用户关注了您的公众号之后,您用JavaScript发送一个 ...

  9. 高德地图 JavaScript API 开发系列教程(一)

    高德地图 API 提供包括 Web API 即 JavaScript API,Android API,定位API,IOS API,WP API,Win8 API等,本系列教程主要针对高德 JavaSc ...

  10. 【原】iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation【包会】

    在上一篇专题文章[原]iOSCoreAnimation动画系列教程(一):CABasicAnimation[包会]中我们学习了iOS核心动画CoreAnimation中CABasicAnimation ...

随机推荐

  1. F12 Preserve log 查看之前的api接口返回数据,只有火狐浏览器能用

    F12 Preserve log 查看之前的api接口返回数据,只有火狐浏览器能用

  2. Vue3 写业务逻辑不适合用TS(TypeScript)

    TypeScript 最重要的就是装饰器 Vue3最重要更新就是Setup 装饰器就是为了打散功能点,Vue3的Setup功能也是打散功能点,那用Vue3上TS,感觉就是自己给自己多一层工作量. 我这 ...

  3. C#泛型的类型参数约束

    常用约束 约束告知编译器类型参数必须具备的功能. 在没有任何约束的情况下,类型参数可以是任何类型. 编译器只能假定 System.Object 的成员,它是任何 .NET 类型的最终基类. 如果客户端 ...

  4. Debian打开架构支持

    第一步检查内核有没有 AMD和i386 dpkg --list | grep linux-image  会出现现在电脑上的内核,可以看到支持的架构 dpkg --print-foreign-archi ...

  5. Nordic芯片调研简析

    一 公司简介: Nordic semiconductor是一家在奥斯证券交易所(OSX:NOD)上市的挪威无晶圆厂半导体公司,专门研究IoT的无线技术.Nordic的声誉建立在领先的技术和开发工具之上 ...

  6. C++类的访问权限

    首先明确一个类的用户有三种: 一类用户:类的成员和友元 二类用户:子类的成员及子类的友元 三类用户:外部的用户代码(通过类的对象或指针) 一个类有三种成员 private:只有一类用户可以访问priv ...

  7. TypeScript必知三部曲(二)JSX的编译与类型检查

    在本三部曲系列的第一部中,我们介绍了TypeScript编译的两种方案(tsc编译.babel编译)以及二者的重要差异,同时分析了IDE是如何对TypeScript代码进行类型检查的.该部分基本涵盖了 ...

  8. django(Ajax、自定义分页器、form组件)

    一.Ajax 1 概述 异步提交局部刷新 例子:github注册 动态获取用户名实时的跟后端确认并实时展示到前端(局部刷新) 朝后端发送请求的方式 1.浏览器地址栏直接输入url回车 GET请求 2. ...

  9. Python伪数据生成器Mimesis 使用

    一.**Mimesis的介绍** Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据.这些假数据可以用来填充测试数据库,创建假API端点 ...

  10. RowHammer 攻击:内存的隐形威胁

    今天看了一篇 IT 之家关于 AMD 处理器受 RowHammer 内存攻击影响的报道,心血来潮了解了一下 RowHammer 攻击的原理,把了解到的知识记录下来. RowHammer 攻击是一种相对 ...