@krll-k

В чем разница между var f = function(){}; и function f(){};?

В чем разница между var f = function(){}; и function f(){};?
  • Вопрос задан
  • 1757 просмотров
Решения вопроса 2
standy
@standy
var f = function() {};function expression
function f() {};function declaration

Основная разница в том, что второе поднимает определение функции до начала области видимости, в которой она объявлена. То есть можно использовать функцию до ее объявления.

hoisted(); // выведет 'foo'

function hoisted() {
  console.log('foo');
}

notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function() {
   console.log('bar');
};


upd:
Другое отличие состоит в возможности моментального вызова функции, так называемое iife

var expression = function() { console.log('foo'); }();
// выведет 'foo'

function declaration() { console.log('bar'); }();
// SyntaxError: expected expression, got ')'
Ответ написан
miraage
@miraage
Старый прогер
// line 1
typeof hoisted; // function
'hoisted' in window; // true

// Some code...

// line 500
function hoisted() {}


А этот код
// line 1
typeof hoisted; // undefined
'hoisted' in window; // true

// Some code...

// line 500
var hoisted = function() {};


То же самое, что и
// line 1
var hoisted;
typeof hoisted; // undefined
'hoisted' in window; // true

// Some code...

// line 500
hoisted = function() {};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@President42
по-моему, во втором случае можно использовать функцию до объявления, а в первом -- нельзя
Ответ написан
Комментировать
@whats
Гугл сломался ?
Ответ написан
Комментировать
@dimaboss
хорошим тоном считается использовать второй вариант
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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