関数式(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;
};