Как часто вы используете qq && qq()
Как часто вы используете qq && qq()
Типа если функция существует, то вызвать)))) куда удобнее чем if'ы подскажите сахарок который юзаете вы:) |
Не часто, я стараюсь об этом вообще не задумываться.
Сложно говорить о сахаре в js, при подобном использовании код часто становиться нечитабельным. Стараюсь не злоупотреблять подобными конструкциями и цепями вызовов, хотя иногда получается цепь длинной в страницу, чаще в строку по 10 функций подряд, эдакая лапша без jq, с jq совсем страшно порой :) |
Цитата:
А мне почему-то цепочки легче воспринимаются |
Цитата:
Рассуждения абстракты, поэтому не имеют особого смысла без примеров, а мне сейчас лень приводить пример. |
Придумал пример: берешь минимизированную версию jq и пытаешься её привести в читабельный вид, чтобы было понятно что и за что отвечает.
Если в течении недели приведешь её хотя бы в более менее внятный вид, то считай что я заблуждаюсь. Хотя я думаю и месяца будет мало. |
По теме: в данном конкретном случе предпочитаю использовать if, но например если нужно присвоить результат то куда удобнее: a=qq&&qq();
P.S. Это нифига не сахарок, с таким подходом сахаром можно обозвать всё что угодно кроме asm. |
Цитата:
|
Согласен с Gozar, лучше таким не злоупотреблять. Я вот всегда делаю упор на читабельность (конечно, не в проигрыш производительности). Даже когда после if (condition) идет одна инструкция, я всегда открываю фигурные скобки
if (typeof cache[id] !== "undefined") { return cache[id]; } То же относится и к циклам, просто вымораживает такой код for (var i = 0, l = array.length; i < l; i ++) while (i --) doSomething() но не такой for (var i = 0, l = array.length; i < l; i ++) { while (i --) { doSomething(); } } А вот такими a && array.push(a)делами пусть занимается минификатор, он так и делает |
Цитата:
|
Цитата:
|
Вполне нормальная практика, ничем не мешающая читабельности. И это не единственное применение aa && bb:
animatable && $( el ).animate({ ... }); log = function( text ){ console && console.log( text ); }Что здесь непонятного, я не знаю. |
А вот я не брезгую func && func(). Всё равно для всех читабельно не сделаешь. А тот кто знает - поймёт.
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Livaanderiamarum, успокойтесь. Новички действительно путаются во всём, чего не знают. Но почему это должно влиять на то, как я пишу код - я не понимаю.
Если я пишу код для новичка - я стараюсь его писать понятно. Если я пишу код, который в будущем разбирать буду либо я, либо программист-не-новичёк - я не вижу причин не использовать данную конструкцию (я не говорю обо всём, что тут приводилось в пример). Она понятна программисту, который хорошо знает JS. |
Цитата:
|
Цитата:
if (typeof (func) !== "undefined") { // проверяем, есть ли функция func(); // если есть - запускаем }; Цитата:
"Здравствуйте! Судя по вашему сообщению, вы ну совсем не знаете javascript. Освойте основы языка и вопрос отпадет сам, полностью или частично. А с чем не справитесь - поможем. На сайте javascript можно начать изучать с учебника, раздел Основы javascript. Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/ Задавайте конкретные вопросы по ходу дела." |
Цитата:
че то вы вобще неадекватные все седня.. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Почему typeof пишется со скобками, что такое !== и зачем это использовать? Вот два нубских вопроса. В случае a && a() количество нубских вопросов === 1 :D |
Цитата:
|
Да и вообще, что за дебильное слово "нуб"? Его придумали компьютерные игроки (точнее, школьники-задроты :D), которые далеки от программирования. Всё, буду стараться его не употреблять.
|
Цитата:
Цитата:
FINoM, вы собираетесь задавать нубские вопросы и смотреть, как я буду выкручиваться?) Я выкручусь, не сомневайтесь) Но, честно говоря, я не очень понимаю, чего вы добиваетесь. Цитата:
|
Цитата:
Цитата:
|
Ну так я ответил)
На самом деле, всё же зависит от человека, от уровня его адекватности, вежливости. Если проще - то от того, понравится он мне, вызовет желание помогать, или нет. Если да - то я с ним буду возиться, помогать. А если нет - то и пошёл в дупу) |
Цитата:
Цитата:
в принципе, мне приятней читать такое : if(foo) { bar(); bar2(); } нежели такое : foo && bar(),bar2(); Цитата:
|
Цитата:
Цитата:
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, время: 17:24. |