関数式(FunctionExpression)と変数宣言(VariableDeclaration)

HTML

<ul>
 <li><a href="http://www.ecma-international.org/ecma-262/8.0/#sec-variable-statement">13.3.2 Variable Statement - ECMAScript® 2017 Language Specification</a></li>
 <li><a href="http://www.ecma-international.org/ecma-262/8.0/#sec-function-definitions">14.1 Function Definitions - ECMAScript® 2017 Language Specification</a></li>
</ul>

JavaScript

'use strict';
conole.log(a);  // undefined (変数 a は先行して定義される)

var a;  // 変数 a が宣言される (VariableDeclaration)

a = function (x) {  // 関数式(FunctionExpression)が定義され、変数 a に代入される (※変数 a の定義は先行して行われている点に注意)
  return x + 1;
};