2016-04-12 10 views
1

Dieser Code ist mein erster Versuch, ein Modul zu erstellen, das den vollständigen Namen gibt, wenn der Spitzname gegeben wird. aber ich bin unbestimmt in den Ergebnissen und weiß nicht warum. DankJavascript-Modul mit Closure und einer Funktion

let nameProper = (function nameProper (nameShort) { 
    let names = { 
    "fj": "Fred Johnson" 
    }; 
    return function() { 
    return names['nameShort'] || nameShort; 
    }; 
}()); 

let myName = nameProper('fj'); 
+0

'Namen [ 'nameShort'] || nameShort; 'warum zeichnest du' nameShort'? Sie wollen wahrscheinlich 'Namen [Name Kurz] || nameShort; ' – Hamms

+0

Wenn Sie ['nameShort'] mit einem Anführungszeichen verwenden, sucht es nach dieser Zeichenfolge – JordanHendrix

Antwort

2
const nameProper = (function() { 
    const names = { 
    fj: "Fred Johnson" 
    }; 

    return function (nameShort) { 
    return names[nameShort] || nameShort; 
    }; 
})(); 

let myName = nameProper('fj'); 

Sie benötigen Argument für die innere Funktion zu übergeben, nicht die Schließfunktion, die sofort aufgerufen wird.

0

Alternativ:

let nameProper = function(nameShort) 
{ 
    return this.names[nameShort] || nameShort; 
} 
.bind 
({ 
    names: 
    { 
     "fj": "Fred Johnson" 
    } 
}); 

let myName = nameProper('fj');