这是我的代码:
(function() {
var libby = {};
libby.greet = function() {
console.log('heello');
}
return libby;
})();
我正在学习创建一个JavaScript库。我在我的html中包含上面的文件并加载页面,库加载,但是当我在控制台中键入libby
时,它会抛出错误“libby未定义”。
答案 0 :(得分:2)
您必须在变量中获取返回值。
var libby = (function () {
var libby = {};
libby.greet = function () {
console.log('heello');
};
return libby;
}());
从IIFE返回的值被分配给全局变量libby
。请注意,内部libby
变量是私有,并且无法在IIFE之外访问。
也可以在全局window
对象上添加局部变量。
(function () {
var libby = {};
libby.greet = function () {
console.log('heello');
};
window.libby = libby; // Make it global
}());
答案 1 :(得分:1)
这就是你的IIFE关闭的重点。 您的库变量现在不会与其他库中的变量发生冲突。 如果要使用库,则需要在IIFE外部使用变量,以便对库函数进行全局范围访问。
var somePrivateName = (function() {
var libby= {};
libby.greet = function()
{
console.log('heello');
} return libby;
})();
现在,您可以使用somePrivateName
访问库功能。
somePrivateName.greet();