78
77

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

関数宣言と関数式の違い

Posted at

所謂、

//関数宣言
function hoge {}
//関数式
var hoge = function{}

の違い。
「関数と、変数にいれる関数ってなにが違うの?」という問の解。

##関数の巻き上げがあるかどうかの違い
関数宣言の場合、関数の巻き上げにより
関数宣言前でも実行ができるが、
関数式の場合は変数のみが巻き上げられるため関数式以降でないと実行できない。

function someFunc(){
	foo(); // -> foo :関数宣言前でも実行可
	bar(); // -> TypeError: undefined is not a function :実行不可	
	
	function foo(){
		console.log('foo');
	}
	
	var bar = function(){
		console.log('bar');
	};
	
	bar(); // -> bar :関数式後なので実行可
}
	
someFunc();

###巻き上げとは
関数内のどの場所で変数を定義しても、それらはその関数の先頭で宣言されたのと同じように動作すること。
関数の場合は宣言だけでなくその定義も巻き上げられる。

78
77
0

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
78
77

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?