javascript - 当 IIFE 返回一个值时,该值存在于何处?

标签 javascript iife

当我在 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"] 

最佳答案

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

var return_value_of_x = x();

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

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

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

var MyClass = (function () { …

关于javascript - 当 IIFE 返回一个值时,该值存在于何处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185406/

相关文章:

javascript - D3 绘制圆形数组

php - 将 PHP 变量传递给 JavaScript

函数表达式前面的 JavaScript 加号

javascript - 更改显示模块模式之外的可配置设置对象

javascript - jQuery图片懒加载还是优化web加载速度的解决方案吗

javascript - 如何查看关联的点击功能码

javascript - D3 词云 : how to auto size the font so words will not run out , 并将文字缩放到所有屏幕?

javascript - 对象字面量和在 IIFE 内返回对象的函数之间有什么区别和优点/缺点?

javascript - 如何正确使用立即调用函数表达式(IIFE)来声明类?

javascript - 使用 IIFE 进行 AJAX 调用?似乎无法让 .done 与常规函数一样工作