если функция callback не задана как параметр при вызове updateLastOnlineTime, то внутри updateLastOnlineTime будет проинициализирована новой пустой функцией.
но лучше бы проверку, что callback реально является функцией, а не другим объектом, к примеру. вот как-то так:
function isFunction(fn) {
var obj= {};
return fn && obj.toString.call(fn) === '[object Function]';
}
callback = isFunction(callback) || function() {};
При нажатии на кнопку, пройтись по всем полям, проверить длину значения. Если у всех длина больше 0, то вывести модальное окно.
Самое банальное, что можно сделать.
1. Задание. Сроки.
2. В чью пользу трактуются не указанные в задании нюансы.
3. Сколько вариантов предоставляется, минимально, максимально.
4. Сколько правок.
5. Требование к готовым файлам для верстки.
6. Права на стоковые изображения.
7. Право или запрет на размещение работы в портфолио.
8. Срыв сроков.
9. Время на согласование каждой итерации у заказчика.
10. Оплата дополнительных переделок, внутренних страниц, финтифлюшек и т.д.
11. Пункт, что работу дизайнер выполняет на своем оборудовании и ПО.
12. Право дизайнера привлекать к работе третьих лиц.