7

次の JavaScript 関数がまったく同じように動作するのを見ました。では、構文以外の違いは何ですか。機能は次のとおりです。

var functionName=function(){
    //some code here
}; 

function functionName(){
    //some code here
} 

私はそれらを次のように呼びます:

functionName();

構文が違うと言わないでください。それ以外に、次のような違いはありますか

1)speed of execution
2)Memory utilization etc.

前もって感謝します!

4

2 に答える 2

1

これは、StackOverflow で何度も回答されています。あくまでもネーミングの仕方です。したがって、回答からいくつかのポイントを取り上げると、次のように言えます。

  1. 関数宣言と変数宣言は常に、JavaScript インタープリターによって、それらを含むスコープの先頭に見えないように移動 (「ホイスト」) されます。関数のパラメーターと言語で定義された名前は、明らかに、既に存在します。

  2. 長所と短所:

    関数に名前を付ける利点はいくつかあります。

    • メタ分析のための名前。functionInstance.name名前を表示します。
    • さらに重要なことは、名前がスタック トレースに出力されることです。
    • 名前は、自己文書化や読み書きのできるコードを書くのにも役立ちます。

    名前付き関数式には 1 つの欠点があります

    • IE で NFE のメモリ リークが発生する
  3. もう一つの主な違い

    違いはfunctionTwo、スクリプト ブロックの解析時に定義されるのに対しfunctionOne、実行時に定義されることです。例えば:

    <script>
      // Error
      functionOne();
    
      var functionOne = function() {
      }
    </script>
    
    <script>
      // No error
      functionTwo();
    
      function functionTwo() {
      }
    </script>
    

参考文献

  1. var functionName = function() {} vs 関数 functionName() {}
  2. JavaScript では、名前付き関数と匿名関数のどちらが優先されますか?
  3. 名前付き関数式の謎を解く
  4. 関数宣言と関数式
  5. var functionName = function() {} vs 関数 functionName() {}
于 2013-03-05T04:55:22.257 に答える
0
  1. 1 つ目は名前付き関数式で、呼び出し元に何らかの値を返す必要があります。
  2. 2つ目は単なる関数です。値を返すかどうかはあなた次第です
于 2013-03-05T04:53:47.500 に答える