Комментарии 13
А зачем все переменные глобально объявлять? Более того, зачем объявлять переменные в отдельном файле? Причём, половина из них просто вытягивает из объекта библиотеки свои кишки в глобальное пространство.
Если нужен конфиг, то его просто можно хранить в объекте. Если ещё нужна инициализация — используйте классы/функции-конструкторы.
Ещё непонятно, зачем вместо function name()
писать var name = function ()
.
PS Исходники лучше на гитхаб
var name = function () {}
Я лично предпочитаю писать отдельно переменную и присваивать ей функцию, это дело стиля (мы же не будем устраивать здесь холивары типа, что лучше ставить пробелы или табы), главное чтобы стиль написание не был разным в файлах, Например, если пишешь одинарные кавычки, то пиши так во всех файлах проекта, а не по разному (видел от людей такие ошибки).Например, если пишешь одинарные кавычки, то пиши так во всех файлах проекта, а не по разному (видел от людей такие ошибки).
Я пишу разные кавычки, ошибкой это не считаю. Если нужна интерполяция строк или многострочная строка — беру обратные одинарные. Если в строке встречается одинарная кавычка — двойные. В остальных случаях — одинарные.
Что касается синтаксиса записи функций, всё ещё сложнее. Дело в том, что
function f()
var f = function ()
var f = function f()
Хоть и делают похожие вещи, в деталях отличаются. И второй вариант долгое время мешал отладке, т.к. имя функции терялось. Сейчас хром умеет распознавать второй случай, а вот умеет ли так нода и другин браузеры — хз. А первый вариант позволяет использовать функцию до её определения, что иногда бывает полезно. Так что нужно подходить к таким вещам осознанно.
Я лично предпочитаю писать отдельно переменную и присваивать ей функцию, это дело стиля
Ну, вообще говоря, есть разница. Именованные функции имеют атрибут name и «всплывают» — это дает возможность перенести их объявление, например, в конец файла без особого труда.
мы же не будем устраивать здесь холивары типа, что лучше ставить пробелы или табы
Зачем устраивать холивар, когда можно использовать ESLint?
Именованные функции имеют атрибут name и «всплывают»
Простите за глупый вопрос: а разве инициализация переменных не всплывают? Или я что-то не понимаю?
инициализация переменных не всплывают?
На самом деле, очень хороший вопрос. В случае с функциями всплывают только объявления, но не инициализации. Таким образом, инструкция вида
// ...
var foo = function() { }
будет интерпретирована как
var foo;
// ...
foo = function () {}
Более подробно можно почитать на StackOverflow
Функция draw для каждого объекта выполняет широкий круг задач: от непосредственной отрисовки до контроля нажатий на экран, а если учесть что все это выполняется по requestAnimationFrame можно смело прогнозировать фризы графики при попытке дописать туда тяжелую логику.
Тяжело разбираться в расчетах, где то нужен del, где-то — не нужен (кстати, как del переводится?). Del конечно, нужен но только для рендеринга, отчего можно смело переносить его в отрисовку, а из других расчетов — убрать,
Ну и еще я бы посоветовал вам Фаулера,
PS: код pl.js свалится с ошибкой.
Создание игры Doodle Jump для Android в Intel XDK за 2 часа на JavaScript с нуля