14.01.2012, 01:50
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от melky
|
типа если в qq находится НЕ "",null,undefined,false,0, то попытаться это вызвать
|
НЕ ЗНАЮ НИ ОДНОЙ ФУНКЦИИ С ТЕЛОМ "",null,undefined,false,0 ))))
Сообщение от melky
|
нежели такое :
foo && bar(),bar2();
|
тут не foo bar bar2, а именно
foo && foo ()? а еще можно делать так
return foo && foo ()
своеобразная проверочка на выполнение))
|
|
14.01.2012, 01:52
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Livaanderiamarum
|
НЕ ЗНАЮ НИ ОДНОЙ ФУНКЦИИ С ТЕЛОМ "",null,undefined,false,0 ))))
|
есть примеры того, когда нужно выполнять функцию, если она передана?
|
|
14.01.2012, 01:56
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от melky
|
есть примеры того, когда нужно выполнять функцию, если она передана?
|
/**
* 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++
}
}
}
})()
Последний раз редактировалось Livaanderiamarum, 14.01.2012 в 02:00.
|
|
14.01.2012, 02:05
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
хм. ладно, завтра почитаю. завтра экзамен по информатике) автомат 95\100. емаё, уже сегодня!
PS "эти" места можно выделять *!* ... */!*
чтобы выделить строку, поставь *!* на пустой строке, и */!* тоже.
|
|
14.01.2012, 02:16
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от melky
|
типа если в qq находится НЕ "",null,undefined,false,0, то попытаться это вызвать
|
Да, если так предполагается.
|
|
14.01.2012, 02:37
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от melky
|
хм. ладно, завтра почитаю. завтра экзамен по информатике) автомат 95\100. емаё, уже сегодня!
PS "эти" места можно выделять *!* ... */!*
чтобы выделить строку, поставь *!* на пустой строке, и */!* тоже.
|
но это тэг ошибки я не хотел унижать свой код))
|
|
14.01.2012, 10:38
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Мне кажется проблема не столь глобальна, нежели единообразие кода:
if (arguments.length == 1)
return imagesContainer[imagesHash];
if (arguments.length == 2) {
//...
}
Для чего придумали фигурные скобки:
- чтобы не париться, где завершился код по условию
- чтобы не парился интерпретатор, где завершился код по условию
В первом случае при просмотре кода нужна лишняя мысль:
- определить, где закончился код по условию
Во втором случае такая мысль не мешает читать код.
Также при написании кода приходиться выбирать какой стиль использовать в данной ситуации, что нифига не способствует сосредоточенности на выражении мысли через код.
При расширении задачи по условию приходиться добавлять фигурные скобки, иначе - фиг знает как оно будет работать.
Вывод: лень нифига не двигатель прогресса программиста
ps: Новички здесь абсолютно не при чём, это всё понты
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
14.01.2012, 11:14
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Gozar, согласен целиком и полностью !
|
|
14.01.2012, 12:50
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Gozar, нет дело в том что у меня конструкция if означает проверить на что-то, а конструкция
func && func()
и
return func && func()
означают проверить существование функции, если существует, то вызвать, и вернуть тру или фолс.
тут меньше мыслей чем в if потому что тут все конкретезировано под функции.
и да, новички здесь вообще не при чем, кто то зачем-то про них писать начал)
Последний раз редактировалось Livaanderiamarum, 14.01.2012 в 12:52.
|
|
14.01.2012, 13:59
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
return func && func();
if (func) {
return func();
}
Вариант с if проще для понимания(быстрее) через n количество времени. Дело не в возможностях программиста, а скорее в простоте чтения кода. Я уже писал выше.
Я же не мификатор продумывать наиболее короткий код. Раньше я увлекался подобным в PHP, но в дальнейшем решил отказаться. Форматирование и простота понимания кода позволяют строить легко сложные системы, а также возвращаться в будущем к ним и развивать далее.
В разделе работа часто пишут - Программист умеющий писать понятный код. Я считаю это важнее, нежели строить из себя минификатор.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
|
|