// JavaScript source code
var foo = (function () {
var o = { bar: "bar" };
return {
bar: function () {
console.log(o.bar);
}
};
})();
foo.bar();
这是怎么回事? foo 是一个对象吗?它是一个命名函数吗? 这看起来像是一种提供私有(private)数据成员的类概念的可怕方式......
最佳答案
它们被称为IIFE
的https://developer.mozilla.org/en-US/docs/Glossary/IIFE
检查这个使用 IIFE 的示例 http://javascriptissexy.com/understand-javascript-closures-with-ease/
通常 javascript 模块是按照该模式编写的。
var foo = function () {
var o = { bar: "bar" };
return {
bar: function () {
console.log(o.bar);
}
};
};
foo().bar();
和
var foo = (function () {
var o = { bar: "bar" };
return {
bar: function () {
console.log(o.bar);
}
};
})();
foo.bar();
相似。
关于iife - 有人可以解释一下这个 javascript 片段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296220/