Разница декларация с var
является VariableDeclaration , тогда как декларация с function
ключевым словом является FunctionDeclaration .
FunctionDeclaration поднят все вместе, и в отличие от VariableDeclaration , он имеет поле body
, которое содержит тело функции. Вы можете обнаружить такие различия, используя ESLint parser .
Вот почему:
someFunc();
function someFunc(){ console.log('someFunc'); } // hoisted as FunctionDeclaration
var someOtherFunc = () => {console.log('someOtherFunc');}; // not hoisted because the value of the variable is a function expression
var someNewFunc = function () {console.log('someNewFunc');}; // not hoisted because the value of the variable is a function expression
someOtherFunc();
someNewFunc();