如何在以下代码中从外部调用内部函数?
(function (){
var funOne = {
funTwo : function (){
var funFour = function(){
console.log('inner function working');
}
},
funThree : function () {
console.log('working');
}
}
funOne.funTwo(); // works
funOne.funThree(); // works again
funOne.funTwo.funFour(); // throwing exception
})();
答案 0 :(得分:2)
通过尝试将funTwo定义为函数(funOne.funTwo()
)和对象(funOne.funTwo.funFour()
),您遇到了funFour的范围问题。
以下是两个访问funFour的选项:
funTwo()
。如何改变funTwo:
funTwo : function (){
var funFour = function(){
console.log('inner function working');
};
funOne.funFour = funFour; // Option 1
return { 'funFour': funFour }; // Option 2
},
如何调用每个选项:
funOne.funFour(); // Option 1
funOne.funTwo().funFour(); // Option 2
答案 1 :(得分:0)
无法从外部访问功能funTwo 的本地变量(var funFour)。如果你想在函数funTwo之外使用 funFour ,你需要将funFour声明为全局变量。
已编辑的代码在这里。
(function (){
var funFour;
var funOne = {
funTwo : function (){
funFour = function(){
console.log('inner function working');
}
},
funThree : function () {
console.log('working');
}
}
funOne.funTwo(); // works
funOne.funThree(); // works again
funFour(); // Call function funFour here
})();