Приведённый вами пример реализации lazy load является самым базовым: если вы сами попробуете написать отложенную загрузку, то после отладки ваш код будет выглядеть почти так же; это минимальный функционал, необходимый для lazy load. А для мягкости и эффектов вам и правда достаточно будет CSS, мне кажется.
А у этого плагина, например, прямо в мануале написано, как можно использовать сторонние инструменты типа animate.css для реализации красивых анимашек. Даже демка есть.
Ильдар Гизетдинов: другие возможные варианты я уже описал выше и я ни разу не говорил что вижу какой-то смысл их использовать. К тому же как раз об этом я и веду речь - о том, что незачем использовать xhr, когда есть более просто способ на данный момент.
iBird Rose: для отложенной загрузки изображений существует не так уж много вариантов: загрузка бинарных данных, загрузка base64 и переопределение src с эксплуатацией load событий. Вы о чем, о загрузке blob?
Roquefort: в качестве примера выполните в консоли console.log('test'); a = 1; b = 2; c = 3;. Сначала console.log выведет 'test', а потом сама консоль выведет последнее вернувшееся значение, 3.
Log это метод объекта console, да. Он выводит в консоль все что вы ему передали в аргументах и возвращает undefined. Первая строка вывода это собственно вывод в консоль, функционал console.log. Вторая строка это вывод в консоль обусловленный окружением - выводится последнее значение.
То есть если выполнить в консоли console.log('hello, world'); то сначала выведется 'hello, world', а потом консоль выведет последнее значение, undefined.
А что именно вас в этом удивляет? Вы ничего не передаёте в console.log, он и выводит то что вы передаёте - ничего. То же и с var - он возвращает undefined, потому что так он работает. У него другая функция.
ajky: и мне кажется, что это очень странно, т.к. я даже не могу смоделировать ситуацию, в которой бы let не исправлял ситуацию. Тогда можно попробовать положить key в замыкание, но это вроде как одно и то же, так что я не знаю чо делать.
scepter: обычно задачу решают в соответствии с целью, то есть если нужно переопределить функции, то вы просто переопределяете функции. Фокусы с аргументами мне кажутся тут лишними. Но всё же добавил в ответ.
scepter: нууу, мне кажется это не очень нужно: counter возвращает функцию, generator возвращает функцию, это за собой влечет некоторые сложности. Чтобы с помощью созданных вами инструментов/функций изменить параметры генерируемой функции, вам нужно будет полностью переопределить её саму. Это вы можете сделать с помощью генератора. Поэтому, мне кажется, еще один уровень контроля, переопределяющий исходную функцию, не нужен. Просто переопределяйте:
А у этого плагина, например, прямо в мануале написано, как можно использовать сторонние инструменты типа animate.css для реализации красивых анимашек. Даже демка есть.