LoginSignup
35
40

More than 5 years have passed since last update.

function文と関数リテラルの違いの簡単メモ

Last updated at Posted at 2017-09-20

関数定義(function文)

定義してから実行できる。

hoge.js
function hoge(){
  console.log('ほげ')
}

hoge(); 
// "ほげ"

コード順関係なく先に実行させることもできる。

hoge.js
hoge(); 
// "ほげ"

function hoge(){
  console.log('ほげ')
}

関数リテラル(無名関数の代入)

関数を作ってから実行できる。

hoge.js
var hoge = function (){
  console.log('ほげ')
};

hoge(); 
// "ほげ"

先に実行すると怒られる。

hoge.js
hoge(); 
// hoge is not a function

var hoge = function (){
  console.log('ほげ')
};

function文はプログラムの最初に宣言されたものとみなされる。ホイスティング(巻き上げ)というらしい。
関数リテラルは、ホイスティングされず実行コンテキスト中に動的に定義される。
また、function文ではセミコロン(;)は不要で、関数リテラルは式だからセミコロン(;)があるという違いも気をつけよう。

35
40
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
35
40