Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как часто вы используете qq && qq() (https://javascript.ru/forum/misc/24774-kak-chasto-vy-ispolzuete-qq-qq.html)

Livaanderiamarum 14.01.2012 01:50

Цитата:

Сообщение от melky
типа если в qq находится НЕ "",null,undefined,false,0, то попытаться это вызвать

НЕ ЗНАЮ НИ ОДНОЙ ФУНКЦИИ С ТЕЛОМ "",null,undefined,false,0 ))))


Цитата:

Сообщение от melky
нежели такое :
foo && bar(),bar2();

тут не foo bar bar2, а именно
foo && foo ()? а еще можно делать так

return foo && foo ()

своеобразная проверочка на выполнение))

melky 14.01.2012 01:52

Цитата:

Сообщение от Livaanderiamarum (Сообщение 150387)
НЕ ЗНАЮ НИ ОДНОЙ ФУНКЦИИ С ТЕЛОМ "",null,undefined,false,0 ))))

есть примеры того, когда нужно выполнять функцию, если она передана?

Livaanderiamarum 14.01.2012 01:56

Цитата:

Сообщение от melky (Сообщение 150388)
есть примеры того, когда нужно выполнять функцию, если она передана?

/**
 * 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++
			}
		}
	}
})()

melky 14.01.2012 02:05

хм. ладно, завтра почитаю. завтра экзамен по информатике) автомат 95\100. емаё, уже сегодня!

PS "эти" места можно выделять *!* ... */!*
чтобы выделить строку, поставь *!* на пустой строке, и */!* тоже.

FINoM 14.01.2012 02:16

Цитата:

Сообщение от melky
типа если в qq находится НЕ "",null,undefined,false,0, то попытаться это вызвать

Да, если так предполагается.

Livaanderiamarum 14.01.2012 02:37

Цитата:

Сообщение от melky (Сообщение 150394)
хм. ладно, завтра почитаю. завтра экзамен по информатике) автомат 95\100. емаё, уже сегодня!

PS "эти" места можно выделять *!* ... */!*
чтобы выделить строку, поставь *!* на пустой строке, и */!* тоже.

но это тэг ошибки я не хотел унижать свой код))

Gozar 14.01.2012 10:38

Мне кажется проблема не столь глобальна, нежели единообразие кода:

if (arguments.length == 1)
           return imagesContainer[imagesHash];

if (arguments.length == 2) {
//...
}


Для чего придумали фигурные скобки:
- чтобы не париться, где завершился код по условию
- чтобы не парился интерпретатор, где завершился код по условию

В первом случае при просмотре кода нужна лишняя мысль:
- определить, где закончился код по условию

Во втором случае такая мысль не мешает читать код.

Также при написании кода приходиться выбирать какой стиль использовать в данной ситуации, что нифига не способствует сосредоточенности на выражении мысли через код.

При расширении задачи по условию приходиться добавлять фигурные скобки, иначе - фиг знает как оно будет работать.

Вывод: лень нифига не двигатель прогресса программиста ;)

ps: Новички здесь абсолютно не при чём, это всё понты :)

melky 14.01.2012 11:14

Gozar, согласен целиком и полностью !

Livaanderiamarum 14.01.2012 12:50

Gozar, нет дело в том что у меня конструкция if означает проверить на что-то, а конструкция
func && func()
и
return func && func()
означают проверить существование функции, если существует, то вызвать, и вернуть тру или фолс.
тут меньше мыслей чем в if потому что тут все конкретезировано под функции.

и да, новички здесь вообще не при чем, кто то зачем-то про них писать начал)

Gozar 14.01.2012 13:59

return func && func();

if (func) {
    return func();
}

Вариант с if проще для понимания(быстрее) через n количество времени. Дело не в возможностях программиста, а скорее в простоте чтения кода. Я уже писал выше.

Я же не мификатор продумывать наиболее короткий код. Раньше я увлекался подобным в PHP, но в дальнейшем решил отказаться. Форматирование и простота понимания кода позволяют строить легко сложные системы, а также возвращаться в будущем к ним и развивать далее.

В разделе работа часто пишут - Программист умеющий писать понятный код. Я считаю это важнее, нежели строить из себя минификатор.


Часовой пояс GMT +3, время: 10:24.