Javascript 当iLife返回一个值时,该值存在于何处?

Javascript 当iLife返回一个值时,该值存在于何处?,javascript,iife,Javascript,Iife,当我在示例中尝试该示例时,没有返回,因此我添加了它,因为我认为它应该返回(我不确定我是否正确) 未定义它登录到我的控制台MyClass 如果iLife返回一个类,为什么它说没有定义MyClass (function() { var key = Symbol("key"); function MyClass(privateData) { this[key] = privateData; } MyClass.prototype = { doStuff: func

当我在示例中尝试该示例时,没有返回,因此我添加了它,因为我认为它应该返回(我不确定我是否正确)

未定义它登录到我的控制台
MyClass

如果iLife返回一个类,为什么它说没有定义
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"] 

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

var return_value_of_x = x();

因为你的生命中没有任何东西,所以这个值被丢弃了

在您的示例中,
MyClass
是在IIFE中声明的变量。它不存在于该函数之外。您可以在更大范围内创建另一个同名变量:

var MyClass = (function () { …

如果你的生命正在返回一个值,你可以像这样存储这个值

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