MDNのクロージャについての記事で、以下のコードについて質問があります。
function makeFunc() { var name = 'Mozilla'; function displayName() { alert(name); } return displayName; } var myFunc = makeFunc(); myFunc();
この
var myFunc = makeFunc(); myFunc();
の関数の呼び出し部分を、ただ単にmakeFunc();と記述しても同様の結果が得られると思ったのですが、エラーになってしまいました。
なぜmyFuncに代入する必要があるのでしょうか。
ご回答頂けると幸いです。
> エラーになってしまいました。
どんなエラーですか?
function makeFunc() {
var name = 'Mozilla';
function displayName() {
alert(name);
}
return displayName;
}
makeFunc();
↓
ƒ displayName() {
alert(name);
}
こんな感じで、関数displayNameがそのまま帰ってきてしまいます。
returnでdisplayNameが戻り値になるようになっているので、こうなることは分かるのですが、なんでmyFuncに代入するとエラーが出なくなるのかなと思いました。
それはふつう「エラーになる」とは言いません。期待通りに動いてないだけで。
回答3件
あなたの回答
tips
プレビュー