Return 在揭示模块模式中
Return in Revealing Module Pattern
我在此处阅读了 Addy 关于揭示模块模式的书。但是,如果您执行示例代码,它实际上 return 未定义。解决方法是在每个调用的函数之前添加 'return'。如果使用 RMP,我是否应该为每个被调用的函数添加 return?这是让它工作的正确方法吗?我错过了什么?
var myRevealingModule = (function () {
var privateCounter = 0;
function privateFunction() {
privateCounter++; <--need to add return
}
function publicFunction() {
publicIncrement(); <-- need to add return
}
function publicIncrement() {
privateFunction(); <--need to add return
}
function publicGetCount(){
return privateCounter;
}
// Reveal public pointers to
// private functions and properties
return {
start: publicFunction,
increment: publicIncrement,
count: publicGetCount
};
})();
myRevealingModule.start(); <-return undefined
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
这个问题与贼法牧无关,而是与函数和 return 值有关。
为什么您会期望一个 return 实际 return 除了未定义之外的任何东西的方法?
仔细看看这里。 start
实际上调用了 publicFunction
但后者的主体没有 return 任何东西。
然而你调用它并期待一个值。
你的问题的答案是:是的,如果你想从函数返回一个值,你必须 return 它。
在这个特殊的例子中,他们有一个方法 count
到 return 当前值。另外两个方法只是用来控制计数器。
我在此处阅读了 Addy 关于揭示模块模式的书。但是,如果您执行示例代码,它实际上 return 未定义。解决方法是在每个调用的函数之前添加 'return'。如果使用 RMP,我是否应该为每个被调用的函数添加 return?这是让它工作的正确方法吗?我错过了什么?
var myRevealingModule = (function () {
var privateCounter = 0;
function privateFunction() {
privateCounter++; <--need to add return
}
function publicFunction() {
publicIncrement(); <-- need to add return
}
function publicIncrement() {
privateFunction(); <--need to add return
}
function publicGetCount(){
return privateCounter;
}
// Reveal public pointers to
// private functions and properties
return {
start: publicFunction,
increment: publicIncrement,
count: publicGetCount
};
})();
myRevealingModule.start(); <-return undefined
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript
这个问题与贼法牧无关,而是与函数和 return 值有关。
为什么您会期望一个 return 实际 return 除了未定义之外的任何东西的方法?
仔细看看这里。 start
实际上调用了 publicFunction
但后者的主体没有 return 任何东西。
然而你调用它并期待一个值。
你的问题的答案是:是的,如果你想从函数返回一个值,你必须 return 它。
在这个特殊的例子中,他们有一个方法 count
到 return 当前值。另外两个方法只是用来控制计数器。