2016-09-22 10 views
0

このようなネストされた関数を書いても大丈夫ですか?JavaScript - ネストされた関数を書く方法

var player = function() { 
    'use strict'; 

    var setLives = function() { 
      return 3; 
     }, 
     lives = setLives(); 

    console.log(lives); 
}; 

player(); 

ほとんどの人は、以下のアプローチを使用するように見える:

var player = function() { 
    //'use strict'; 

    function setLives() { 
     return 3; 
    } 

    var lives = setLives(); 

    console.log(lives); 
}; 

player(); 

私が使用した方法は問題かだろうん、それはこの(非常に醜い)だろうjsLintで

var player = function() { 
    //'use strict'; 

    var setLives = function() { 
     return 3; 
    }; 

    var lives = setLives(); 

    console.log(lives); 
}; 

player(); 

後者が好まれるでしょうか?

コードが遅くなったり、違いはありませんか?

ありがとうございます!

答えて

1

引用符付きのコードについては、違いはありません。純粋にスタイルの問題です。

関数内のコードの段階的なフロー中に発生するため、関数式(var setLives = function() { };)を記述することをお勧めします。

関数の宣言(function setLives() { })は、より前に処理されているため、関数内のコードの流れがになる場合があります。

関数の定義は、状況に応じて異なることが起こっている場合は...

if (someCondition) { 
    // One definition for it 
} else { 
    // A different definition 
} 

...それは関数式ではなく、宣言を使用する必要があります。

+0

重要なシナリオはありますか? –

+1

@BlazeSahlzen:ステップバイステップフローで重要だった場合は、式を使用する必要があります。ステップフローの前に*発生することが重要だった場合は、宣言を書く必要があります。実行時の条件に基づいて関数の定義が異なる場合は、式が必要です。 –

+0

お返事ありがとうございます。それは素晴らしい例です。私は条件を使用しており、その中にメソッドを追加しています。私は関数式を取るのが正しいアプローチだろうか? – Paddy

関連する問題