JavaScript中立即执行函数的写法,千万不能够错过!!!

什么是立即执行函数?

JavaScript立即执行函数可以让你的函数在创建后立即执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。

( function(){} )()( function (){} () )是两种javascript立即执行函数的常见写法

为什么要有立即执行函数?(优点)

1. 不必为函数命名,避免了污染全局变量
2. IIFE 内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

首先我们先从IIFE的运行原理说起。

立即执行函数的原理以及书写方式 !!!

在讲立即函数的原理之前,我们得先知道如何声明一个函数 !!!

  • 函数声明:
1. 字面量形式
function fn() {
 console.log("123");
}

2. 匿名函数表达式
var fn = function () {
 console.log("123");
}

方式一

(function () { // open IIFE 
// inside IIFE 
}()); // close IIFE

方式二

(function () { // open IIFE 
// inside IIFE 
})(); // close IIFE

写到这里有人可能会问,为什么不能够这样子写呢?

function () { // open IIFE 
// inside IIFE 
}(); // close IIFE

当这样子写了以后,JavaScript执行引擎会报这样一个错误!!!

Uncaught SyntaxError: Unexpected token (

这又是为什么呢?

产生这个错误的原因是,Javascript执行引擎看到function关键字之后,认为后面跟的是函数声明语句,不应该以圆括号结尾。所以报出这样的错误。

那又该如何解决呢?,下面就是IIFE的运行原理

我们现在就是要让Javascript执行引擎知道,圆括号前面的部分不是函数定义语句,而是一个表达式,可以对此进行运算。
这也就解释了为什么前面加上一对圆括号就可以了。
这种情况下Javascript引擎就会认为这是一个表达式,而不是函数声明,当然要让Javascript引擎认为这是一个表达式的方法还有很多:
比如 一些常用的运算符:+ - ! …等等,这样Javascript引擎就会认为这是一个表达式,
而不是函数声明,就不会报出上面的错误了。当然用的最多的还是上面的方式,不会有歧义!!!

如有错误,欢迎指正,希望这篇文章能够对你有所帮助 !!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值