首页 > 解决方案 > 有人可以解释 Javascript 经典模块模式以及我们为什么要使用它吗?

问题描述

我遇到了这段代码,我不明白这是怎么回事,然后我删除了IIFE括号并且console.log不再起作用,有人可以解释这是怎么回事,它被称为经典模块模式. 为什么我们要使用它?

var foo = (function(){
  var publicAPI = {
    bar: function(){
      publicAPI.baz()
    },
    baz: function(){
      console.log('baz')
    }
  }
  return publicAPI
})()

foo.baz()
foo.bar()

删除 IIFE 括号 console.log 不再起作用。


var foo = function(){
  var publicAPI = {
    bar: function(){
      publicAPI.baz()
    },
    baz: function(){
      console.log('baz')
    }
  }
  return publicAPI
})

非常感谢您。

标签: javascriptdesign-patternsmoduleiife

解决方案


鉴于:

foo = function () {}

foo那个功能。

鉴于:

foo = function () {}();

foo是该函数的返回值


如果您不调用该函数,则foo获得不同的值。


推荐阅读