何时使用IIFE与对象文字?

Mod*_*rmo 5 javascript

我即将开始为应用程序构建一个小的javascript模块.我已经接触过两种组织代码的方式:对象文字和IIFE.我知道,对于IIFE,所有变量和函数都保持私有,除非另有公开,但是还有其他原因我会在对象文字上使用它吗?

为什么我要使用对象文字:

var gojiraSays = 'Toxic Garbage Island!!!'

var app = {

  printStuff: function(){
    console.log(gojiraSays)
  }

}
Run Code Online (Sandbox Code Playgroud)

...说IIFE版本:

var app = (function(){
  var gojiraSays = 'Toxic Garbage Island!!!'

  var yellGojira = function(){
    console.log(gojiraSays);
  }

  return{
    yellGojira: yellGojira
  }

}());

app.yellGojira();
Run Code Online (Sandbox Code Playgroud)

小智 1

您应该学习第三种更好的组织模块的方法,即 ES6 模块,这使得所有这些变得无关紧要。

// app.js
const gojiraSays = 'Toxic Garbage Island!!!'

export function printStuff() {
  console.log(gojiraSays)
}

// consumer.js
import {printStuff} from './app';

printStuff();
Run Code Online (Sandbox Code Playgroud)

您将需要一些基础设施,例如 Babel 转译步骤,才能完成这项工作。