JavaScript
Function Expression в сравнении с Function Declaration
Прочитал статью на learn.javascript.ru и вообще не понял когда применять Function Expression и зачем он нужен, если есть Function Declaration. Может кто доступным языком объяснить когда нужно применятьFunction Expression и как. Еще раз: ДОСТУПНЫМ языком обычного человека
Особо ничем не отличаются. Разве что Function Declaration можно объявить и до и после её вызова. Происходит это потому что JavaScript сперва проходит по всем Function Declaration и только тогда выполняет основной код.
Function Expression по сути функция сохраненная в переменную. Ты не можешь использовать переменную до того как её инициализируешь.
Можно:
Судя по StackOverflow, это единственное отличие.
Я лично всегда использую Function Declaration. В альтернативе не вижу особого смысла.
Function Expression по сути функция сохраненная в переменную. Ты не можешь использовать переменную до того как её инициализируешь.
Можно:
function returnText(){
return "text";
}
returnText();
Можно: returnText();
function returnText(){
return "text";
}
Можно: const returnText = function(){
return "text";
}
returnText();
Нельзя: returnText();
const returnText = function(){
return "text";
}
Судя по StackOverflow, это единственное отличие.
Я лично всегда использую Function Declaration. В альтернативе не вижу особого смысла.
Уже давно всегда можно стрелочные функции применять
Разница:
На практике в 99% случаев – это вкусовщина, используйте, что вам нравится, НО иногда выбор синтаксиса действительно будет иметь значение.
Но, скорее всего, и вместо
- Function Declaration может быть объявлена и до, и после ее вызова, Function Expression нужно объявлять только до вызова.
- Function Declaration не доступен вне своей области видимости т.е. вне блока кода, ограниченного { }, поэтому когда нужно чтобы функция, например, была глобальной, но присвоить ее нужно где-то в другом месте, мы объявляем переменную глобально, а функцию присваиваем внутри условия/другой функции и т.д. и т.п. Получается Function Expression
На практике в 99% случаев – это вкусовщина, используйте, что вам нравится, НО иногда выбор синтаксиса действительно будет иметь значение.
Но, скорее всего, и вместо
let sum = function(a, b) {
return a + b;
};
и вместо function sum (a, b) {
return a + b;
};
вы будете использовать стрелочные функции (когда дойдете до них, если еще не изучали) let sum = (a, b) => a + b;
Вот они гораздо короче и удобнее, и у них тоже есть нюансы!! Думаю, когда их изучите – будете почти всегда применять именно стрелочные функции, везде, где это возможно. Но опять же – вкусовщина, если конечно не важен контекст.Похожие вопросы
- Зачем в JavaSript function declaration и function expression?В чем необходимость хранения функции под именем переменной?
- Объясните мне, пожалуйста, что это за аргументы функции в javascript ( function(arg1, arg2, ..) ).
- Приколы JS со сравнением []==[]
- Сравнение двухмерного массива
- Сравнение объектов js.
- Рено дастер Expression 4x2 1.6 МКП5 или Expression 4x4 2.0 МКП6, что лучше брать? Объясните чем лучше, а чем нет .
- Sqlite3 python ошибка: Error user-defined function raised exception
- Javascript function - со скобками и без скобок?
- Почему пишет : "Нельзя преобразовать тип function(a:real,b:real) real к real "
Я всегда пользуюсь "объявлением функции", но когда нужна анонимная или самовызывающаяся, то технически пользуюсь "функциональными выражениями".
По сути не горячо не холодно от того как они называются, главное уметь ими пользоваться. Если преподаватели это требуют запоминать такие вещи, то с системой образования явно что-то не так...
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/function