底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

【javascript】function hoge(){} と var hoge = function(){}の違いがわからない

JavascriptのFuncitionの使い方は3つくらいある。

 

例1:function hoge( ){ }というパターン

var num = 1;

hoge(num);  //1回めの呼び出し

function hoge(data){
    alert(data);
}

num = 2;

hoge(num);  //2回めの呼び出し

これは非常にわかりやすいというか、C言語の関数呼び出しと似ている。

ただ、1回めも2回めも普通に呼び出しが成功するのだ。

何故、1回めの呼び出しも成功するかというと「Javascript」はインタプリタ言語ではあるが、最近は実はコンパイルされているからだという。

 

例2:var hoge = function( ){ }というパターン

//hoge(1);        // 呼び出しに失敗する


var hoge = function(data){
    alert(data);
}


hoge(1);  //呼び出しに成功する
alert(hoge);

 これはC言語をやっていると非常に変則的に見える書き方だけど、

例1と結果は同じになる。ただし、関数の定義前に呼びだそうとすると

失敗してしまう。そうだとすると、インタプリタだけどコンパイルされているとかいう説明に疑問が湧いてしまうのだけど・・・。

 

ちなみにalert(hoge)としている箇所は

 function(data){
    alert(data);
}

というように出力される。

 

使い分けというか、どちらをどう使うかについてはまた調べたい。

 

 

 

よくわかるJavaScriptの教科書

よくわかるJavaScriptの教科書

 

 

 

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで