Цитата:
Цитата:
foo && foo ()? а еще можно делать так return foo && foo () своеобразная проверочка на выполнение)) |
Цитата:
|
Цитата:
/**
* Xранилище картинок, принимает 2 параметра, либо имя картинки, тогда возвращает картинку
* @param {Object} imagesHash ассоциативный массив в стиле {'имяКартинки', 'url'}
* @param {Function} call функция которая вызовется по завершению загрузки ВСЕХ картинок.
* @memberOf images
*/
image = (function() {
// контейнер с картинками
var imagesContainer = {},
// счетчик загруженных картинок
counter = 0,
// требуется загрузить картинок
length = 0,
// калбак
callback;
/**
* @module images
*/
return function(imagesHash, call) {
// если аргумент один вернуть картинку
if (arguments.length == 1)
return imagesContainer[imagesHash];
// если аргумента 2, то добавить картинки
if (arguments.length == 2) {
// зафиксировать калбак
callback = call
for (i in imagesHash) {
var img = new Image()
img.src = imagesHash[i]
// при загрузке картинки
img.onload = function() {
// прибавить счетчик
counter++
// если загружены все картинки вызвать калбак
if (counter === length) {
return callback && callback() //вот то место!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
// засунуть картинку в контейнер
imagesContainer[i] = img
// прибавить длину картинок которых требуется загрузить
length++
}
}
}
})()
|
хм. ладно, завтра почитаю. завтра экзамен по информатике) автомат 95\100. емаё, уже сегодня!
PS "эти" места можно выделять *!* ... */!* чтобы выделить строку, поставь *!* на пустой строке, и */!* тоже. |
Цитата:
|
Цитата:
|
Мне кажется проблема не столь глобальна, нежели единообразие кода:
if (arguments.length == 1)
return imagesContainer[imagesHash];
if (arguments.length == 2) {
//...
}
Для чего придумали фигурные скобки: - чтобы не париться, где завершился код по условию - чтобы не парился интерпретатор, где завершился код по условию В первом случае при просмотре кода нужна лишняя мысль: - определить, где закончился код по условию Во втором случае такая мысль не мешает читать код. Также при написании кода приходиться выбирать какой стиль использовать в данной ситуации, что нифига не способствует сосредоточенности на выражении мысли через код. При расширении задачи по условию приходиться добавлять фигурные скобки, иначе - фиг знает как оно будет работать. Вывод: лень нифига не двигатель прогресса программиста ;) ps: Новички здесь абсолютно не при чём, это всё понты :) |
Gozar, согласен целиком и полностью !
|
Gozar, нет дело в том что у меня конструкция if означает проверить на что-то, а конструкция
func && func() и return func && func() означают проверить существование функции, если существует, то вызвать, и вернуть тру или фолс. тут меньше мыслей чем в if потому что тут все конкретезировано под функции. и да, новички здесь вообще не при чем, кто то зачем-то про них писать начал) |
return func && func();
if (func) {
return func();
}
Вариант с if проще для понимания(быстрее) через n количество времени. Дело не в возможностях программиста, а скорее в простоте чтения кода. Я уже писал выше. Я же не мификатор продумывать наиболее короткий код. Раньше я увлекался подобным в PHP, но в дальнейшем решил отказаться. Форматирование и простота понимания кода позволяют строить легко сложные системы, а также возвращаться в будущем к ним и развивать далее. В разделе работа часто пишут - Программист умеющий писать понятный код. Я считаю это важнее, нежели строить из себя минификатор. |
| Часовой пояс GMT +3, время: 22:45. |