我很好奇为什么这个功能不起作用。我注意到它正在返回undefined而不是我想要的匿名函数对象。
function localizeGreeting(language) {
(function(lang) {
if (lang === 'en') {
return function(firstname, lastname) {
console.log('Hello' + firstname + ' ' + lastname);
}
}
if (lang === 'es') {
return function(firstname, lastname) {
console.log('Hola' + firstname + ' ' + lastname);
}
}
})(language);
}
var test = localizeGreeting('en');
test('Dave', 'Matthews');
答案 0 :(得分:7)
你的外部功能不会返回任何东西。
它调用一个返回值的内部函数,但然后忽略该返回值。
旁注:没有理由首先拥有中间IIFE。
答案 1 :(得分:2)
这不是正确的做法。你不需要这里的IIFE。以下解决方案将起作用
function localizeGreeting(lang) {
if (lang === 'en') {
return function(firstname, lastname) {
console.log('Hello' + firstname + ' ' + lastname);
}
}
if (lang === 'es') {
return function(firstname, lastname) {
console.log('Hola' + firstname + ' ' + lastname);
}
}
}
var test = localizeGreeting('en');
test('Dave', 'Matthews');