Объявление функции через переменную против function
Я не знаю как правильно это описать в заголовке, но хочу понять вот что..
Зачем объявлять функцию так:
const funcName = () => {};
... или так:
const funcName = function () {};
... а не так:
function funcName() {};
Если мы находимся в глобальной области.
Я понимаю, что первые две функции можно вызвать лишь после их нахождения в коде, а последнюю можно вызвать до ее нахождения в коде.
Но каков смысл их объявления в начале? Разве это удобно, ведь придется их вечно пролистывать, чтобы перейти к "основному" коду.
Ответы (1 шт):
Для кого-то это дело вкуса. А для кого-то важны такие особенности:
Hoisting может быть нежелательным, нужно более строгое и предсказуемое поведение кода.
Переменную
constнельзя переопределить, а переменнуюfunctionможно (а в нестрогом режиме можно ещё и объявить несколько раз), и это может привести к путанице:
function funcName() { 42; }
console.log(funcName.toString()); // function funcName() { 0; }
function funcName() { 0; }
console.log(funcName.toString()); // function funcName() { 0; }
funcName = 42;
console.log(funcName); // 42
- Переменная с
function(как и переменнаяvar) в глобальной области видимости создаёт свойство в объектеwindow, засоряя глобальную область видимости, а переменнаяconst— нет.
const func1 = function () {};
function func2() {}
console.log(window.func1); // undefined
console.log(window.func2); // function func2() {}