当我在示例中尝试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"]
答案 0 :(得分:2)
与任何其他函数调用一样,该值将转到函数的左侧。
var return_value_of_x = x();
或
var return_value_of_iife = (function () { return 1; })();
由于您的IIFE的LHS上没有任何内容,因此该值将被丢弃。
在您的示例中,MyClass
是在IIFE中声明的变量。它不存在于该函数之外。您可以在更广泛的范围内创建另一个具有相同名称的变量:
var MyClass = (function () { …
答案 1 :(得分:-1)
如果你的IIFE返回一个值,你可以像这样存储值。
let returnedValue = (function(){console.log('return'); return 2;})();