#関数定義(function文)
定義してから実行できる。
hoge.js
function hoge(){
console.log('ほげ')
}
hoge();
// "ほげ"
コード順関係なく先に実行させることもできる。
hoge.js
hoge();
// "ほげ"
function hoge(){
console.log('ほげ')
}
#関数リテラル(無名関数の代入)
関数を作ってから実行できる。
hoge.js
var hoge = function (){
console.log('ほげ')
};
hoge();
// "ほげ"
先に実行すると怒られる。
hoge.js
hoge();
// hoge is not a function
var hoge = function (){
console.log('ほげ')
};
function文はプログラムの最初に宣言されたものとみなされる。ホイスティング(巻き上げ)というらしい。
関数リテラルは、ホイスティングされず実行コンテキスト中に動的に定義される。
また、function文ではセミコロン(;)は不要で、関数リテラルは式だからセミコロン(;)があるという違いも気をつけよう。