Помогите, пожалуйста, понять мистику.

var callback = function() { alert(«2»); };
var value = 0;
if ( typeof callback == «function» )
{
alert(«1»);
value = callback();
alert(«3»);
}

При выполнении выводится сначала алерт 1, потом алерт 3 (2 не выводится), а value принимает значение undefined.

КАК ЭТО МОЖЕТ БЫТЬ?!?!?!

61 Responses to Помогите, пожалуйста, понять мистику.

  1. LleCap:

    Chrome 20, показывает 1, 2, 3, все нормально.

    var callback = function() { console.log(«2»); };
    var value = 0;
    if ( typeof callback == «function» )
    {
    console.log(«1»);
    value = callback();
    console.log(«3»);
    }
    1
    2
    3
    undefined

  2. LleCap:

    FF 14, точно так же.

  3. SamBlank:

    value ясен пень будет undefined
    нет return

  4. AmtEkb:

    ну и в любом случае у меня второй алерт не выводится. Куда можно копать, чтобы обнаружить причину?
    Что проверить?

  5. AmtEkb:

    ой, забыл, что в функции ещё есть return 1;

  6. AmtEkb:

    да, я тупой, забыл, что там есть return 🙂
    Что насчёт второго алерта, который не выводится?

  7. AmtEkb:

    Надо ещё сказать, что консоль файербага не выводит ошибок.

  8. AmtEkb:

    Пожалуй, я излишне упростил…

    Там, конечно, не callback, а instance[settings] является функцией, объект instance получается через пень-колоду, settings строка, а соответствующая функция определяется где-то в другом месте. Тем не менее, typeof instance[settings] равно «function».

  9. LleCap:

    выводит. Для пущей строгости заверни в try { … } catch (e) { console.error(e.message); }

  10. AmtEkb:

    Сотрите, пожалуйста, этот пост, чтоб не засирать блогу тупыми вопросами 🙂

  11. AmtEkb:

    Извиняйте, я тупень.
    Оказывается, jstree каждый метод каждого плагина заворачивает ещё в обёртку, где проверяет состояние залоченности дерева перед тем, как вызвать метод плагина. Поэтому не выдавалось никакой ошибки — с функциями всё было ок. И поэтому выходило undefined — в обёртке при locked === true делался простой return.

    Это пиздец. Весь день убил, всю либу jstree изнохратил на алерты. Пиздец.

  12. Ymmsuper:

    Вот примерно про это я и говорил. 🙂

  13. 01pSpb:

    Такой большой, и всё в мистику веришь 🙂
    Для дебага в современных вебкитах можно и нужно использовать console и debugger — это очень и очень сильно помогает. Вплоть до того, что можешь попасть внутрь анонимного скоупа и прям в консоли посмотреть состояния переменных.

  14. AmtEkb:

    ну это я уж для красного словца обозвал её мистикой )))
    Да, в js я пока что ни бум-бум. Знаю только самые простейшие вещи.
    А какие есть нормальные дебаггеры?

  15. 01pSpb:

    никаких, кроме встроенного в веб-инспектор хрома. Для него есть такая языковая конструкция — debugger; т.е. это такой яваскриптовый брейкпойнт. При этом в консоли доступны все переменные, видимые в скоупе, в котором стоит этот дебаггер

  16. AmtEkb:

    спасибо

  17. 01pSpb:

    да не за что, постируй если чо. Но вообще, у нас есть чятик для решения таких проблем, лучше туда приходи

  18. AmtEkb:

    я не смог подключиться
    Не нашёл, куда вводить https ссылку, и мне было лень разбираться.

  19. 01pSpb:

    ну постни свой скайп, я тебя заинвайчу

  20. Regwhite:

    а после того, как поймешь, что в хроме сделали кусок говна, а не инструменты, поставь firebug для фаерфокса и наслаждайся

  21. 01pSpb:

    с удовольствием, только тормозит, он, блядь, как чёрт. Ну не могу я себе позволить фф+файрбаг на ноуте

  22. Regwhite:

    чо ж за ноут у тебя такой.
    тормозит, да, жрет память как гондон, но пока что реально удобнее него ничего нет. в хроме и опере понаделали отвратительной неюзабельной хуйни, про ишак и говорить нечего.

  23. AmtEkb:

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

  24. 01pSpb:

    макбучек у меня овощной. А какой хуйни понаделали (мы же только о дебаггере?)?

  25. ResSm:

    Проверил во всех браузерах — выводится

  26. Regwhite:

    ну там все инструменты нелепые. что DOM-инспекторы, что монитор сети, что все остальное.

  27. 01pSpb:

    НУ ХУУУУЙ ЗНАЕТ

  28. Regwhite:

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

  29. 01pSpb:

    я совершенно не могу понять, что не так с интерфейсом в web developer tools, и чем наколенный кривой файрбаг красивее и удобнее. Не, ну вот правда

  30. Regwhite:

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

  31. Xuagreen:

    поддерживаю! Firebug сейчас — самая ебанутая хуйня. Никогда им не пользуюсь, уже года три.

  32. Xuagreen:

    где ж там в файробаге всё логично? Попробуй-ка подебажить какую-нибудь крупную игру на фейсбуке с кучей фреймов — проклянёшь эту балалайку. Баг годен только хомяка своего дебажить.

  33. Regwhite:

    фреймами не пользуюсь уже лет десять 🙂 со всем остальным он справляется хорошо

  34. Xuagreen:

    кого ебёт чем ты пользуешься? Когда ты занимаешься крупными интеграционными проектами, то ты пользуешься имеющимися средствами интеграции. Вот и получается простой вывод — баг для домашних страничек.

  35. Regwhite:

    вывод такой от скудоумия может получаться. все, что не юзает фреймы — домашние странички? давай, до свидания.

  36. Xuagreen:

    я такого не писал. Я лишь написал, что баг подходит не для всех видов работы, а раз так, то инструмент он хуёвый. Представь себе молоток, которым можно только дюбеля в стену вгонять и только. На хуй тебе такой молоток? Вот лично мне такой не нужен.

    В этой позиции нет утверждения, что какие-то виды работ охуенные, а какие-то нет. Речь исключительно про инструмент.

  37. Regwhite:

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

  38. Kkebad:

    это все вкусовщина, по большому счету. все что не IE Web Developer Tools, будет работать в прямых руках

  39. Xuagreen:

    JS дебаггер в IE очень мощный.

  40. Regwhite:

    кстати, в последних версиях им даже реально можно пользоваться, да

  41. ResSm:

    Главное что, гугль к интерфейсу web developer tools, отношения не имеет вообще. это ж часть webkit

  42. AilNo:

    интерфейс делали эппл. И фаербаг сосет. Хотя бы отсутствием профайлера. Как вы хуярите приложения без профайлера?

  43. Regwhite:

    да есть там профайлер, сто лет как уже

  44. Regwhite:

    не важно, кто его делал. он хуевый получился все равно.

  45. AilNo:

    покаж. Когда я с него слез не было. Интересно какой он.

  46. AilNo:

    это твое субъективное мнение.

  47. Regwhite:

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

  48. ResSm:

    не ну смысл дискуссии обычно заключается в том что бы выяснить объективное мнение.

    А какбэ вот то что ты говоришь — мое субъективное мение такое и ниибет, это как-то дискуссию заводит в тупик.

  49. Regwhite:

    мнение может быть только субъективным. объективным бывает факт 🙂

  50. AilNo:

    вот новый. в сафари 6 такой уже. http://d.pr/i/1MKN

  51. Regwhite:

    ну вот мне как-то в этом всем неуютно. фаербаг — уазик, а это — форд фокус в максимальной комплектации. пластик мягкий, подвеска хорошая, а по говну хуй проедешь 🙂

  52. AilNo:

    как раз возможностей больше.

  53. Regwhite:

    мне пока фаербага хватает. консоль лог и вперед в хуевых случаях 🙂

  54. AilNo:

    а загрузку проца на глаз! :

  55. Regwhite:

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

  56. AilNo:

    Вот! По-этому тебе и нравится фб. Это пока! 🙂

  57. Regwhite:

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

  58. Ymmsuper:

    это ты где такой Сафари 6 взял?

  59. 01pSpb:

    скоро выйдет

  60. OCRSm:

    Ие очень заебись в вижуалстудии дебажить. Ощущения, как будто бы в вижуалстудии дебажишь — охуенные!

Добавить комментарий