【问题标题】:When IIFE return a value, where does the value exist?当 IIFE 返回一个值时,该值存在于哪里?
【发布时间】:2017-12-24 10:06:18
【问题描述】:

当我在示例中尝试babel Symbol 上的示例时没有返回,所以我添加了它,因为我认为它应该是(我不确定我是否正确)。

它登录到我的控制台 MyClass 没有定义。

如果IIFE返回一个类,为什么它说MyClass没有定义?

(function() {

  var key = Symbol("key");

  function MyClass(privateData) {
    this[key] = privateData;
  }

  MyClass.prototype = {
    doStuff: function() {
    }
  };
  return MyClass //this is no return for the original example
})();

var c = new MyClass("hello")
c["key"] 

【问题讨论】:

    标签: javascript iife


    【解决方案1】:

    与任何其他函数调用一样,值位于函数的左侧。

    var return_value_of_x = x();
    

    var return_value_of_iife = (function () { return 1; })();
    

    由于您的 IIFE 的 LHS 上没有任何内容,因此该值被丢弃。

    在您的示例中,MyClass 是在 IIFE 中声明的变量。它不存在于该功能之外。您可以在更广泛的范围内创建另一个具有相同名称的变量:

    var MyClass = (function () { …
    

    【讨论】:

      【解决方案2】:

      如果您的 IIFE 返回一个值,您可以像这样存储该值。

      let returnedValue = (function(){console.log('return'); return 2;})();
      

      【讨论】:

        猜你喜欢
        • 2018-11-09
        • 2012-08-04
        • 1970-01-01
        • 2017-03-28
        • 2021-03-27
        • 1970-01-01
        • 2014-10-15
        • 2022-11-17
        • 1970-01-01
        相关资源
        最近更新 更多