专栏首页FEWYJavaScript立即执行函数的解释分析(4)—总结篇

JavaScript立即执行函数的解释分析(4)—总结篇

说明

这次来对立即执行函数 Immediately-Invoked Function Expression (IIFE) ,做最后的总结,会把前面几篇提到的内容做一个整合,这样立即执行函数就算是说完了。

解释

我们回到最初,看代码

(function (){
    console.log(1);
})();

(function (){
    console.log(2);
}());

这是两种比较常见的立即执行函数的写法,这里提两点注意事项!!! 1、函数调用,需要 函数表达式 (),这样来调用,如果是 函数声明 (),就会报错。

var a=function (){
    console.log(1);
}();     //可以输出1,( )前面是函数表达式

function b(){
    console.log(2);
}
b();    //可以输出2,( )前面是函数表达式

function c(){
    console.log(3);
}();   //报错,( )前面是函数声明

2、javascript中圆括号()里面不能包含语句,所以在这一点上,解析器在解析function关键字的时候,会将相应的代码解析成函数表达式,而不是函数声明。

(function c(){
    console.log(3);
})();   //可以输出3,( )前面是函数表达式

所以我们明白了,为什么最开始的那两种立即执行函数的写法,可以起作用了,因为()把函数声明解析为了,函数表达式,而函数表达式与()一起使用,就能调用函数了,所以,我们只要把函数声明变为函数表达式,然后搭配(),就可以调用函数了,请看这些写法。

+function (){
    console.log(1);
}();

-function (){
    console.log(2);
}();

!function (){
    console.log(3);
}();

delete function (){
    console.log(4);
}();

void function (){
    console.log(5);
}();

~function (){
    console.log(6);
}();

+、-、!、delete、void、~、()等其他一些运算符,都可以将函数声明转换为函数表达式,所以立即执行函数的写法是多种多样的,但是用()的方法会更清楚一些。

作用

立即执行函数,可以避免全局变量的污染

定义一个全局变量a,第一次能打印出来,第二次也能打印出来,用立即执行函数的写法,在函数中也定义一个变量a,函数执行了,打印了a,然后再次打印 a 的时候,打印出的是全局变量的a,立即执行函数中的变量a已经没有了。(函数执行后,函数中的变量如果没有被继续引用,就会被释放),而全局变量a,还是存在的,所以,立即执行函数可以避免全局变量的污染 , 也防止产生冲突。 当函数只需要执行一次的时候,我们选择立即执行函数的方式也是很好的。

总结

立即执行函数,相信大家应该明白了,到此算是把立即执行函数说完了,如果文中有什么问题,也非常欢迎大家指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaScript立即执行函数的解释分析(2)—函数表达式与函数声明的区别

    上次我们聊了聊表达式与语句的区别,这次我们说说函数表达式与函数声明,上次虽然提到过这两点,但是并没有很详细的讲,这次要专门聊聊了!

    FEWY
  • 我们应该知道的标签

    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn...

    FEWY
  • 简单说 JavaScript的箭头函数

    箭头函数本质还是函数,我们来看看他与JavaScript中普通函数的区别,先看看写法上的区别。

    FEWY
  • python之函数式编程

    没有“边界效应”的函数:在任何情况下,使用相同参数调用函数产生的结果始终相同,即没有函数内部状态的变化会影响输出结果。在python中,如果函数里包含有全局变量...

    efonfighting
  • 函数声明与表达式的区别

    HTML5学堂:函数有不同的定义方法,一种是函数声明,另一种是函数表达式,那么这两种有何区别呢? 函数声明的基本语法 function functionName...

    HTML5学堂
  • 前端学习(33)~js学习(十):函数

    从方式二的举例中可以看出:所谓的“函数表达式”,其实就是将匿名函数赋值给一个变量。

    Vincent-yuan
  • 【融职培训】Web前端学习 第3章 JavaScript基础教程6 函数基础

    函数是一个可执行的语句块,定义的时候不执行,调用的时候执行,使用"函数名()"的形式可以调用函数, 语法如下所示:

    学习猿地
  • Jmeter 常用函数(29)- 详解 __eval

    https://www.cnblogs.com/poloyy/p/13291704.html

    小菠萝测试笔记
  • Web前端学习 第3章 JavaScript基础教程6 函数基础

    函数是一个可执行的语句块,定义的时候不执行,调用的时候执行,使用"函数名()"的形式可以调用函数, 语法如下所示:

    学习猿地
  • 立即执行函数表达式(IIFE)

    原文:immediately-invoked-function-expression 译者:nzbin 也许你还没有注意到,我是一个对术语比较坚持的人。因此...

    叙帝利

扫码关注云+社区

领取腾讯云代金券