从javascript中的其他函数执行另一个函数
嘿,伙计们,在运行另一个函数时,我有点困惑。我尝试的是:从javascript中的其他函数执行另一个函数,javascript,Javascript,嘿,伙计们,在运行另一个函数时,我有点困惑。我尝试的是: var a = (function() { var babe = function() { console.log('yay'); }; })(); 当我运行像a.babe()这样的代码时,它会给我像TypeError:cannotreadproperty'babe'of undefined这样的错误。为什么会这样 我想从a调用函数babe。。。我怎么做? 我希望你们能帮我 提前感谢。babe是该代码中I
var a = (function() {
var babe = function() {
console.log('yay');
};
})();
当我运行像a.babe()
这样的代码时,它会给我像TypeError:cannotreadproperty'babe'of undefined
这样的错误。为什么会这样
我想从a
调用函数babe
。。。我怎么做?
我希望你们能帮我
提前感谢。
babe
是该代码中IIFE的局部变量。它没有被退回。它不是任何东西的财产。它无法访问
如果你想让它从函数外部调用它,你必须公开它
您正在创建一个名为
babe
的函数,并且它只停留在围绕它的立即调用函数表达式(IIFE)的范围内。由于您没有向调用者返回任何内容,默认情况下,函数调用将被计算为undefined
,并存储在a
中。这就是为什么你会出错
TypeError:无法读取未定义的属性“babe”
这意味着,您正试图访问未定义的值上名为babe
的属性。在这种情况下,a
是未定义的
与所有这些不同的是,您可以简单地从IIFE返回babe
函数,将其包装在一个对象中,如下所示
var a = (function() {
return {
babe: function() {
console.log('yay');
}
};
})()
a.babe();
现在,返回的对象被分配给a
,您可以像这样调用babe
函数
var a = (function() {
return {
babe: function() {
console.log('yay');
}
};
})()
a.babe();
为什么要创建一个自动执行函数?您要做的是使函数babe
成为对象的一部分a
为此,只需执行以下操作:
var a={
babe:function(){document.write('yay');}
}
a、 宝贝()代码>要使用代码,必须执行以下操作
var a = (function() {
var babe = function() { console.log('yay'); }
return babe
})();
a();
要使其成为a.babe()
请查看@thefourtheye或@Quentin。点语法用于访问对象的“属性”。因此,在一个简单的示例中,您可以使用如下内容:
var a = {
babe: function(){ console.log('yay') }
};
a.babe(); // yay
在本例中,如果要创建闭包以从全局范围隐藏其他变量和函数,则必须返回一个对象,然后将该对象分配给a
:
var a = (function() {
return {
babe: function(){ console.log('yay') }
}
})();
a.babe(); // yay
只要记住,无论何时使用点,前面的变量必须是一个对象