LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии

В чем разница обьявлений функций js?

var foo = function() {

}

function foo() {

}
  • Вопрос задан
  • 360 просмотров
Пригласить эксперта
Ответы на вопрос 2
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Все сравнения есть тут.

Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода, поэтому их можно вызвать до объявления, например:


// Function Declaration
sum(1,2) //3
function sum(a, b) {
  return a + b;
}

// Function Expression
summer(1,2) //Ошибка, summer не определена 
var summer = function(a, b) {
  return a + b;
}


P.s А еще есть выделяющийся из толпы конструктор Function. Он позволяет создавать функции из строки, но его детища, заразы, не запоминают окружение, в котором созданы.

var 
     abs = "Я переменная",
     func = (function(abs){
         return new Function("", "return abs;");
     })("Я аргумент")
;

//Вызовем созданную функцию
alert(func()); //"Я переменная"
Ответ написан
Комментировать
TheSunwave
@TheSunwave
Я
В первом случае функция называется Function Expression, во втором Function Declaration, отличаются тем, что Function Declaration, создаются интерпретатором до выполнения кода, а значит функция выполнится в момент инициализации, а не в момент ее явного вызова.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы