2016-04-12 7 views
1

このコードは、ニックネームが与えられたときにフルネームを与えるモジュールを作成するための最初の試みです。私は結果に未定義となり、理由を知らない。おかげクロージャと関数を使用したjavascriptモジュール

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

let myName = nameProper('fj'); 
あなたは、内側の関数にすぐに呼び出されていない、あなたの終値の機能をお使いの引数を渡す必要があり
+0

'名[ 'nameShort'] || nameShort; 'なぜあなたは' nameShort'を文字列化していますか?おそらく 'names [nameShort] || nameShort; ' – Hamms

+0

[' nameShort ']を引用符で囲むと、その文字列が検索されます – JordanHendrix

答えて

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

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

let myName = nameProper('fj'); 

。あるいは

0

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

let myName = nameProper('fj'); 
関連する問題