Понимание JavaScript - Ресурс - PullRequest
       5

Понимание JavaScript - Ресурс

6 голосов
/ 28 февраля 2009

Использование крошечной функции Diggit / Blog в StackOverflow, описанной здесь :

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

У меня всегда были проблемы с пониманием javascript "природы".

Здесь, хорошие части JavaScript описаны Дугласом Крокфордом

Надеюсь, вы найдете эту ссылку полезной.

Теперь часть вопроса:

Какие у вас жалобы на javascript? Используете ли вы IDE для редактирования JavaScript? Как вы думаете, это видео помогает понять "хорошие детали"?

Ответы [ 5 ]

18 голосов
/ 28 февраля 2009

JavaScript: плохие части.

  1. Самая большая ошибка - позднее обнаружение ошибки. JavaScript с радостью позволит вам получить доступ к несуществующему члену объекта или передать неверное количество аргументов функции и заполнить пробел «неопределенными» объектами, которые, если вы сознательно не проверяете их (что нецелесообразно продолжать делать везде ), вызовет исключение или создаст неожиданное значение позже. Возможно, намного позже, что приведет к появлению неуловимых и трудных для отладки ошибок, которые не будут появляться рядом с реальным кодом проблемы. Эти условия должны были генерировать исключения, за исключением того, что у JS изначально не было исключений для повышения. «Undefined» был быстрым и грязным хаком, с которым мы сейчас застряли.

  2. Необъявленные переменные по умолчанию в глобальной области видимости. Это почти никогда не то, что вам нужно, и может привести к тонким и трудным для отладки ошибкам, когда две функции забывают «var» и начинают путаться в одном и том же глобале.

  3. Модель функций конструктора странна даже для языка ОО на основе прототипов и смущает даже опытных пользователей. Забывание «нового» может привести к тонким и трудным для отладки ошибкам. В то время как вы можете сделать из этого проходимую систему классов / экземпляров, нет никакого стандарта, и большинство систем классов, предложенных в ранних уроках, которые люди до сих пор используют, и отчаянно неадекватны, и скрывают, что такое JavaScript на самом деле.

  4. Отсутствие связанных методов. Совершенно не интуитивно понятно, что доступ к «object.method» при его вызове создает волшебную связь с «object» в «this», но передача «object.method» в качестве ссылки теряет соединение; никакой другой язык не работает таким образом. Когда это происходит, для «this» устанавливается неожиданное значение, но оно не «undefined» или что-то еще, что вызывает исключение. Вместо этого весь доступ к свойству заканчивается в «окне», что позже вызывает тонкие и трудные для отладки ошибки.

  5. Целочисленный тип отсутствует. Число выглядит как единица, но разбивается по-разному (например, n + 1 == n для достаточно большого n). Каждый раз, когда появляется NaN или Infinity (совершенно неожиданно, если вы думаете, что имеете дело с целыми числами), вы не узнаете об этом сразу; вместо этого будут возникать тонкие и трудные для отладки ошибки.

  6. Не существует ассоциативного типа массива. Объект выглядит как единое целое, но ломается под разными неожиданными клавишами. Массивы не являются чистыми списками. Каждый раз, когда вы используете «для ... в», вы, вероятно, попали в ловушку и будете испытывать ... да, тонкие и трудные для отладки ошибки.

  7. Обычно плохая обработка строк, по крайней мере для языка сценариев. String.split (, limit) и String.replace () не делают то, что вы думаете, в результате ... вы знаете. Результаты toString (), как правило, плохие и бесполезные для отладки. Между тем мы застряли с мусором, который может пригодиться Netscape, например, String.prototype.blink () и постоянно сбойный escape (). Yay.

  8. И , а затем есть все различия браузеров (в IE все еще отсутствует множество основных методов для базовых объектов) и DOM ...

  9. И, наконец, даже когда исключение действительно происходит, оно скрыто от глаз, поэтому автор даже не осознает, что что-то не так. В результате большинство сайтов забиты ошибками; включите полный отчет об ошибках JavaScript в IE, и результат будет недоступен.

Меня пугает мысль, что новое поколение программистов изучает этот язык как первый язык. Что еще хуже, большая часть учебного материала, из которого они учатся («Мой первый класс R0LL0VERZ!»), Неизменно поощряет наихудшую возможную практику. ‘Javascript:’ URL-адреса, ‘eval ()’ для всего, браузерный доступ к DOM ... oy.

1 голос
/ 28 февраля 2009

альтернативный текст http://oreilly.com/catalog/covers/9780596517748_cat.gif Javascript the Good Parts тоже довольно приличная книга.

Для Javascript Firefox + Firebug и Notepad ++ являются моей IDE. jQuery (и различные плагины) - это мой Framework. Моя самая большая жалоба на Javascript - это IE6

1 голос
/ 28 февраля 2009

Моя самая большая жалоба при использовании JavaScript - это привязки DOM, но на самом деле это не ошибка JavaScript, а то, что каждый браузер реализует его по-своему. В этом смысле IE - худший преступник.

С точки зрения проблем с чистым JavaScript, я до сих пор не полностью использую прототипы таким образом, чтобы я мог использовать их полную мощность; но это меньше жалоба, чем моя личная ошибка. Как язык мне очень нравится JavaScript, и любые его жалобы омрачаются его взаимодействием с DOM.

Я интенсивно использую Firefox + Firebug для основного кодирования и отладки. В Opera и Safari есть отладчики, которые я использую, если у какого-либо браузера есть определенные проблемы. Небеса помогают мне, когда мне нужно отладить IE.

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

Хотя я не видел видео, я просто прочитал «Хорошие части» на этой неделе. Если видео похоже на книгу, это будет очень полезно. Сама книга великолепна, потому что она лаконична и информативна. Это уровень языковой дискуссии, который не так часто можно увидеть, если поискать в Google, чтобы получить лучшее понимание языка в целом.

1 голос
/ 28 февраля 2009

Сложная часть о javascript , на мой взгляд, такова:

  1. Проблемы кросс-браузерной разработки / отладки
  2. Кросс-браузерные проблемы с домом / моделью (всплывающие события и т. Д.)
  3. Отсутствие "классов" (субъективно)
  4. Отсутствие хорошей поддержки отладки в браузерах

Firebug очень помогает для FireFox, но я не нашел ничего хорошего для IE - и сам по себе факт сложен.

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

0 голосов
/ 28 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...