340 文字
2 分
JavaScriptの関数式と関数宣言の違い
JavaScriptにおける2つの関数定義方法:
関数式:
var foo = function(){
conlose.log('Message');
};関数宣言:
function foo(){
console.log('Message');
};どちらの方法でも同じ関数を定義できますが、いくつかの違いがあります。
関数式では:
var fooは、一般的なvarで定義された変数と同様に、関数またはスクリプトの先頭に巻き上げられますが、関数本体は元の場所に留まります。そのため、関数本体の後に呼び出す必要があります。
var foo = function(){
console.log('Message');
};
foo() // 出力結果は'Message'
foo();
var foo = function(){
console.log('Message');
}; // TypeError: Property 'test' of object #<Object> is not a function というエラーになります
上記の2番目のコードは、実際には以下のコードと同じであるため、エラーが発生します。
var foo;
foo();
var foo = function(){
console.log('Message');
};関数宣言では:
foo()関数の関数ブロック全体が、関数またはスクリプト全体の先頭に巻き上げられ、関数またはスクリプト全体で可視になります。つまり、関数定義の前に関数を呼び出すことができます。
foo()
function foo(){
console.log('Message')
} //出力結果は'Message'今後、実際に使用する際には、両者の違いに特に注意してください。
JavaScriptの関数式と関数宣言の違い
https://blog.kisnows.com/ja-JP/2015/02/09/jsfunction-expression-declaration/