LoginSignup
39
42

More than 5 years have passed since last update.

"function func() {...}"と"var func = function() {...}"の違い

Posted at

functionの違い

  • 文(function文)か式(function演算子)かという違いがある。
  • 書き方はどちらも同じだが振る舞いが少し異なる。

関数文の場合

1. そのスコープ内に関数名と同じ名前の変数が作られる。

func(); // ok!! スコープ内だったら宣言より前の部分でも使える
function func() {...}
func(); // ok!!

関数式の場合

1. 変数に代入するまでは使えない。

func(); // error
var func = function(){...};
func(); // ok!!

2. 関数名と同じ名前の変数は作られない。

var func = function test(){...};
test(); // error
func(); // ok!!

3. 内部で自身の名前を使うことは可能。

// 再帰的な処理の例
var calc_fib = function fib(n) {
    if ( n == 0 ) return 0;
    if ( n == 1 ) return 1;
    return fib(n-1) + fib(n-2);
};
fib(10); // error, 関数式の関数名は内部でのみ使用できる。
calc_fib(10); // ok!!

参考

39
42
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
42