Stoyan Stefanov による "JavaScript Patterns" 本には、自己定義関数に関する部分があります。
var scareMe = function(){
console.log("Boo!");
scareMe = function(){
console.log("Double Boo!");
}
}
scareMe();//==>Boo!
scareMe();//==>Double Boo!
期待どおりに動作します。ただし、scareMe 関数を次のように変更します。
function scareMe(){
console.log("Boo!");
function scareMe(){
console.log("Double Boo!");
}
}
scareMe();//==>Boo!
scareMe();//==>Boo!
問題:
- それらの違いは何ですか?
- 2 番目のケースでは、出力が「Double Boo!」ではなく「Boo!」である理由を説明します。