IIFE的使用和解决问题(总结)

  • 什么是IIFE I
  • IFE的来源
  • IIFE的使用
  • IIFE使用总结

什么是IIFE

IIFE是立即执行函数表达式是一种在避免全局命名和变量污染时常用的一种方法。在ES5中由于没有块级作用域的相关说法

 for(var i = 1;i<5;i++){
    console.log(i);
 }
console.log('i的值为:',i);

我们仍然可以在for循环结束后,访问for循环中定义的变量。虽然我们在for循环里面设计了一个变量,但是他会提升到全局作用域中,即我们在外面也会访问到相关的变量,这样就会造成变量污染,我们通常想的是在for循环中定义的循环变量i,希望一旦结束for循环之后,那么这个变量也会随之销毁,那么我就就可以使用IIFE立即执行函数表达式来进行相关的操作。

IIFE的来源

其实IIFE也就是匿名函数,归根到底都是函数,那么函数的定义其实就只有两种,一种是声明式,一种是表达式,但是两种其实存在着不同,其中第二种中存在着变量提升

function f1()    //函数申明是
var f2 = function()  //函数表达式

IIFE的使用

js中每句话后面的分号";'都可以去掉,但是如果使用了IIFE生命的函数,那么函数最近的一句话的结尾就是";"就不能省掉,如果省掉的话就会默认认为未完成,会将下面的和上面的放在一起,但是通常我们会在IIFE前面加上分号,这就是一个香瓜的呢IIFE定义的函数。其实IIFE多定义的函数我们可以通过定义普通函数来实现一样的功能,不过就是写法比较麻烦。

var b = 1
;(function () {
  var b = 2
  console.log('b的值',b);
})()
console.log(b);

IIFE总结

创建块级(私有作用域)避免了向全局作用域中添加变量和函数,因此也避免了多人开发中全局变量和函数的命名冲突,具有良好的独立性。
在IIFE中声明的变量或者函数,都会在执行完成后立即销毁,这样的作法可以减少闭包问题中的内存泄漏等问题,一位内没有志向匿名函数的引用,只要函数执行完毕就可以立即销毁其作用域链了,同时也避免了过多占用内存的相关情况

你可能感兴趣的:(javascript,vue,vue.js,webpack)