ここで何が起こっているのか教えてもらえますか (Firefox と Chrome でテスト済み)。
クロージャーを返す単純な関数があります。
function say (name) {
var msg = 'hallo';
return function () {
console.log(msg, name);
}
}
var sayName = say('joe');
sayName();
ブラウザ コンソールを確認すると、期待どおりの結果が得られます。
Hallo Joe
ただし、最後の行を省略してコンソールから sayName() を実行すると、次のようになります。
Hallo Joe
undefined
余分な undefined はどこから来るのですか?