Javascript 我能';t访问IIFE中定义的变量

Javascript 我能';t访问IIFE中定义的变量,javascript,Javascript,这是我的代码: (function() { var libby = {}; libby.greet = function() { console.log('heello'); } return libby; })(); 我正在学习创建JavaScript库。我在html中包含上述文件并加载页面,库也会加载,但当我在控制台中键入libby时,它会抛出错误“libby未定义”。您必须在变量中获取返回值 var libby = (function (

这是我的代码:

(function() {
    var libby = {};

    libby.greet = function() {
        console.log('heello');
    }
    return libby;
})();

我正在学习创建JavaScript库。我在html中包含上述文件并加载页面,库也会加载,但当我在控制台中键入
libby
时,它会抛出错误“libby未定义”。

您必须在变量中获取返回值

var libby = (function () {

    var libby = {};

    libby.greet = function () {
        console.log('heello');
    };
    return libby;
}());
IIFE返回的值分配给全局变量
libby
。请注意,内部
libby
变量是私有的,在IIFE之外无法访问


局部变量也可以添加到全局
窗口
对象上

(function () {

    var libby = {};

    libby.greet = function () {
        console.log('heello');
    };

    window.libby = libby; // Make it global
}());

这就是你生命终结的全部意义。 您的库变量现在不会与其他库中的变量冲突。 如果你想使用你的库,你需要一个在IIFE之外的变量,它允许全局范围访问库函数

var somePrivateName = (function() {

    var libby= {};

    libby.greet = function() 
       {        
        console.log('heello');  
      }     return libby;   
})();
现在,您可以使用
somePrivateName
访问库功能

 somePrivateName.greet();

是的。对的将其附加到窗口对象效果很好:)