Показать сообщение отдельно
  #33 (permalink)  
Старый 05.01.2016, 18:52
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Нет, var не ставится потому, что переменная с названием main и так уже объявлена с помощью function main(){}. Функции в JS - сущности первого класса и тоже хранятся через помещение в переменную.
Собственно, любая функция - это объект-инстанс класса Function, наследника класса Object и имеет все признаки обычного объекта:
var func = function(){};
console.log(func.constructor == Function); // true
console.log(func instanceof Object); //true

func.property = 10;
func.property++;
console.log(func.property); //11;


Что насчет присвоения в глобал с помощью опущения var - да, такой трюк раньше действительно был возможен, но начиная с ES5 он запрещен. В строгом режиме попытка обращения к необъявленной переменной сгенерирует ошибку.

Последний раз редактировалось Erolast, 05.01.2016 в 19:09.
Ответить с цитированием