# Функция как переменная в JavaScript

Итак, в предыдущем уроке мы с вами выяснили, что обратившись к функции без круглых скобок, мы получаем ее исходный код.

На самом деле все намного интереснее. В JavaScript, в отличие от других языков, функции являются такими же значениями переменных, как числа, строки и массивы.

Давайте посмотрим на примере. Пусть у нас есть, например, функция `func`:

`function func() { console.log('!'); }`

На самом деле у нас нет функции `func`. У нас есть переменная `func`, хранящая в себе исходный код функции.

Мы можем, к примеру, затереть переменную `func` чем-нибудь другим, например, строкой. В этом случае функция `func` больше не будет функцией, а будет строкой. Смотрите на примере:

`function func() { console.log('!'); } func(); // выведет '!' func = 'string'; // затрем переменную func console.log(func); // выведет 'string'`

Сделайте функцию `func`, которая будет возвращать через `return` какую-либо строку.

Выведите результат работы функции `func` в консоль.

Выведите исходный код функции `func` в консоль.

Запишите в переменную `func` число `123`, тем самым затерев функцию из этой переменной. Выведите новое значение переменной `func` в консоль.

← →
↑
en ru