JavaScript 中的 立即执行函数表达式(IIFE) – JavaScript 完全手册(2018版)

栏目: JavaScript · 发布时间: 6年前

内容简介:小编推荐:

JavaScript 中的 立即执行函数表达式(IIFE) – JavaScript 完全手册(2018版)

JavaScript 中的 立即执行函数表达式(IIFE) – JavaScript 完全手册(2018版)

小编推荐: 掘金是一个面向 程序员 的高质量技术社区,从 一线大厂经验分享到前端开发最佳实践,无论是入门还是进阶,来掘金你不会错过前端开发的任何一个技术干货。

注:本文为 《 JavaScript 完全手册(2018版) 》第31节,你可以查看该手册的完整目录。

立即执行函数表达式(IIFE) 是在创建函数后立即执行函数的方法。

立即执行函数表达式(IIFE) 非常有用,因为它们不会污染全局对象,它们是隔离变量声明的简单方法。

这是定义 IIFE 的语法:

;(function() {
  /* */
})()

立即执行函数也可以使用箭头函数定义:

;(() => {
  /* */
})()

基本上,我们在括号内定义了一个函数,然后在后面加上一个括号 () 来执行该函数: (/* function */)()

包裹函数的括号实际上是使我们的函数在内部被视为表达式。 否则,函数声明将无效,因为我们没有指定任何名称:

JavaScript 中的 立即执行函数表达式(IIFE) – JavaScript 完全手册(2018版)

函数声明需要一个名称,而函数表达式不需要它。

你也可以将调用括号放在表达式括号内,没有区别,只是写法不同:

(function() {
  /* */
}())

(() => {
  /* */
}())

使用一元运算符的替代语法

你可以使用一些更奇怪的语法来创建 IIFE ,但它在现实世界中很少使用,并且它依赖于使用任何一元运算符:

;-(function() {
  /* */
})()

+(function() {
 /* */
})()

~(function() {
  /* */
})()

!(function() {
  /* */
})()

但是这种方式不适用于箭头函数。

命名的 IIFE

IIFE 也可以是命名的常规函数(不是箭头函数)。 这不会导致函数“泄漏”到全局作用域,并且在执行后也不能再次调用它:

;(function doSomething() {
  /* */
})()

IIFE 前的分号

你可能已经注意到 IIFE 前的分号了:

;(function() {
  /* */
})()

这可以防止在盲目合并两个 JavaScript 文件时出现问题。 由于 JavaScript 不需要分号,因此你可能会在最后一行中使用某些语句连接一个文件,从而导致语法错误。

这个问题基本上是通过像webpack 这样的“智能”打包 工具 来解决的。

如果你觉得本文对你有帮助,那就请分享给更多的朋友

关注「前端干货精选」加星星,每天都能获取前端干货

JavaScript 中的 立即执行函数表达式(IIFE) – JavaScript 完全手册(2018版)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘技术

数据挖掘技术

[美]MichaelJ.A.B / 别荣芳、尹静、邓六爱 / 机械工业 / 2006-7 / 49.00元

本书是数据挖掘领域的经典著作,数年来畅销不衰。全书从技术和应用两个方面,全面、系统地介绍了数据挖掘的商业环境、数据挖掘技术及其在商业环境中的应用。自从1997年本书第1版出版以来,数据挖掘界发生了巨大的变化,其中的大部分核心算法仍然保持不变,但是算法嵌入的软件、应用算法的数据库以及用于解决的商业问题都有所演进。第2版展示如何利用基本的数据挖掘方法和技术,解决常见的商业问题。 本书涵盖核心的数......一起来看看 《数据挖掘技术》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具