当我在 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/