为什么我的功能工厂不工作?

时间:2015-06-22 16:38:01

标签: javascript

我很好奇为什么这个功能不起作用。我注意到它正在返回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');

2 个答案:

答案 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');