メモったことを家に帰って、もう一度書き残すことによって、きちんと自分の中で咀嚼していくという試み。
function hoge() {
alert('piyo');
}
var hoge = function() {
alert('piyo');
}
上記2つのコードは同じ意味である。しかしながら
hoge();
function hoge() {
alert('piyo');
}
はできるが、
var hoge;
hoge();
function() {
alert('piyo');
}
はできない。
ということを学んだぜ!と書いたら、プログラマの後輩にそれについて詳しく教えていただいた。以下その内容。
function hoge() {
alert('piyo');
}
var hoge = function() {
alert('piyo');
};
上記2つのコードは、 hoge という変数に実行可能な関数オブジェクトが入るという意味で同じ。
hoge();
function hoge() {
alert('piyo');
}
上記はJavaScriptエンジンがfunction式を実行前に変数 hoge に関数オブジェクトをセットしてくれているので、関数式の前に実行式を書いても動作する(alert('piyo');
が実行される)が、
var hoge;
hoge();
function() {
alert('piyo');
}
とすると、変数 hoge への関数オブジェクトの代入は、代入式の実行時に行われるので、代入処理前に hoge を呼び出すと undefined が中に入っている。ということになるそうな。なので、複数人が弄る可能性があるコードの場合は、前者のコードの方が何かと良いみたい。