6

それらの間に違いはありますか? 私は両方の方法を使用していますが、どの人が何をし、どちらが良いのか分かりません。これは関数を定義する良い方法ですか?

function abc(){ 

    // Code comes here. 
} 

abc = function(){ 

    // Code comes here. 
} 

これらの機能の定義には違いがありますか?私は++や++のような何か?

+1

繰り返し質問:http://stackoverflow.com/questions/336859/javascript-var-functionname-function-

それを行うための標準的な、より安全な方法は、自己の呼び出し機能のすべてを包んでvs-function-functionname – ikis

+0

なぜ 'html'タグを再度追加しましたか?この質問はHTMLとは関係ありません! –

+0

これは、人々がオブジェクト指向のアプローチを使用するjavaのこの問題を考えるかもしれないからです... – Janak

答えて

7
function abc(){ 

    // Code comes here. 
} 

吊り上げます。

abc = function(){ 

    // Code comes here. 
} 

ホイストしません。あなたがやった場合例えば

は:abcを囲むスコープの一番上に掲揚されるよう

abc(); 
function abc() { } 

コードが実行されます。

あなたは、しかし、やった場合:

abc(); 
    var abc = function() { } 

abcが宣言されていますが値を持たないため、使用することはできませんされています。

どちらが良いかは、プログラミングスタイルの議論が多いです。

http://www.sitepoint.com/back-to-basics-javascript-hoisting/

+0

Nitpick:* "それで' abc'はまだ宣言されておらず、使用できません。変数宣言も引き上げられているので、変数は宣言されていますが、まだ値はありません。 –

+0

@FelixKling - 更新されました。乾杯。 –

1

短い答え:なし。

グローバル名前空間に関数を配置しています。誰でもこれにアクセスでき、誰でもこれを上書きすることができます。

(function(){ 
    // put some variables, flags, constants, whatever here. 
    var myVar = "one"; 

    // make your functions somewhere here 
    var a = function(){ 
     // Do some stuff here 

     // You can access your variables here, and they are somehow "private" 
     myVar = "two"; 
    }; 


    var b = function() { 

     alert('hi'); 
    }; 

    // You can make b public by doing this 
    return { 
     publicB: b 
    }; 
})(); 
関連する問題