Подтвердить что ты не робот

Что хорошего в JSLint, если jQuery не удалось проверить

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

Итак, почему, когда я запускаю jQuery через проверку JSLint, он дает мне это сообщение:

Ошибка:

Проблема символа строки 18 5: Ожидаемый идентификатор и вместо этого 'undefined' (зарезервированное слово).

undefined,

Проблема с символом линии 24 27: Отсутствует точка с запятой.

jQuery = window.jQuery = window. $= функция (селектор, контекст) {

Проблема с символом линии 24 28: Ожидаемый идентификатор и вместо этого '='.

jQuery = window.jQuery = window. $= функция (селектор, контекст) {

Проблема с символом линии 24 28: Остановка, неспособная продолжить. (0% сканироваться).

Это было сделано с помощью JSLint и jquery-1.3.1.js

4b9b3361

Ответ 1

JSLint проверяет мнение одного конкретного человека (Douglas Crockford) относительно того, что делает хороший код JavaScript. Крокфорд очень хорош, но некоторые из его мнений в лучшем случае являются аналогами, такими как правило подчеркивания или использование операторов increment/decment.

Многие из проблем, отмеченных JSLint в вышеприведенном выпуске, - это проблемы, которые, по мнению Крокфорда, приводят к сложному поддержанию кода, или это то, что, по его мнению, привело к тому, что он делал "умные" вещи в прошлом, которые могут быть трудными для поддержания.

Есть некоторые вещи, которые Крокфорд идентифицирует как ошибки, с которыми я согласен, хотя, как и недостающая точка с запятой. Сбрасывание точек с запятой заставляет браузер угадывать, куда вставлять токен конца кода, и иногда это может быть опасно (оно всегда медленнее). И некоторые из этих ошибок связаны с тем, что JSLint не ожидает или поддерживает несколько назначений, таких как jQuery, в строке 24.

Если у вас есть вопрос о ошибке JSLint, электронной почте Крокфорда, он действительно хорошо отвечает на ответ, и с его ответом вы, по крайней мере, знаете, почему JSLint был реализован именно так.

О, и только потому, что библиотека популярна, это не значит, что код хорош. JQuery популярен, потому что это относительно быстрая и простая в использовании библиотека. То, что оно хорошо реализовано, является весьма несущественным для него популярностью среди многих. Однако, конечно, вы должны читать больше кода, мы все должны.

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

Ответ 2

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

В любом случае предположение, что популярный код является совершенно правильным кодом или даже "хорошим", является ошибочным. Код JQuery хорош, и вы можете многому научиться его читать. Вы все равно должны запускать свой материал через JSLint, хотя бы потому, что хорошо слышать другое мнение о том, что вы написали.

Из описания JSLint:

JSLint берет исходный код JavaScript и просматривает его. Если он обнаружил проблему, он возвращает сообщение, описывающее проблему, и приблизительное местоположение в источнике. Проблема не обязательно является синтаксической ошибкой, хотя это часто бывает. JSLint рассматривает некоторые соглашения о стиле, а также структурные проблемы. Это не доказывает правильность вашей программы. Он просто предоставляет другой набор глаз, чтобы помочь выявить проблемы.

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

Ответ 3

"jQuery очень популярен, поэтому он должен иметь определенную степень хорошего кодирования".

Хотелось бы надеяться, что это так с jQuery, но, к сожалению, это не так. jQuery полезен и популярен, но это не хорошо написанная библиотека JavaScript. Недавно Дэвид Марк опубликовал критическую критику jQuery в comp.lang.javascript, в которой рассматривается большое количество примеров плохого кода, найденного в jQuery:

http://groups.google.com/group/comp.lang.javascript/msg/37cb11852d7ca75c?hl=en&

Ответ 4

Если вы не активно разрабатываете сам jQuery, зачем вообще запускать JSLint? Если он работает, он работает, и вам не о чем беспокоиться.

Ответ 5

Цели разработчиков jQuery - это не то же самое, что и ваши цели. jQuery построен для скорости и компактности и достижения этих целей.

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

Ответ 6

Цель JsLint четко указана в FAQ [1]:

"JSLint определяет профессиональный подмножество JavaScript, более строгий язык, чем тот, который определен в версии 3 спецификации языка ECMAScript. Подмножество связано с рекомендациями, содержащимися в условных обозначениях кода для языка программирования JavaScript".

Теперь, если вы запутались: ECMA3 уже является подмножеством возможностей JS, предоставляемых любым из современных интерпретаторов JS (см. [2] для обзора отношения между версиями JavasScript и ECMAScript)

Чтобы ответить на вопрос "что хорошего JSlint":  * используйте JsLint, чтобы убедиться, что вы используете "безопасный" подмножество Javascript, который нехорошо ломается над реализацией JS.  * используйте Jslint, чтобы проверить, что вы следовали правилам crockford code [4]

Ответ 7

Я нашел один случай, когда JSLint очень и очень полезен: когда вы берете одну из тех библиотек большой буквы, которые плавают вокруг "Сети", затем еще одна, а затем еще одна, вы скоро обнаружите, что загружаете 50k Javascript на каждой новой загрузке страницы (кэширование может помочь, но это не решение для лечения).

Что бы вы сделали? Сжатие этих библиотек. Но ваш хост не выполняет сжатие для файла, отличного от html! И что? Вы используете компрессор Javascript.

Лучшее, что я нашел, это Дин Эдвард; Я использовал его для сжатия John Fraser Showdown (Markdown для библиотеки Javascript), но, к сожалению, сжатие нарушило код. Поскольку Showdown больше не поддерживается, я должен был исправить его сам - и JSlint был бесценен для этого.

Короче говоря, JSlint полезен для подготовки вашего JS-кода для сжатия с большой нагрузкой.

Ответ 8

Если вам нравятся такие методы, как jQuery, вы можете оценить YUI3.

Ответ 9

JQuery - это, конечно, не лучшая вещь в мире. Это уже ясно, когда вы смотрите на нотацию. Комбинация круглых скобок доллара действительно плохо для ваших глаз. Программирование должно быть четким и простым. JQuery далек от этого. Этого достаточно для меня, чтобы не использовать его. То, что это неправильно написано, не удивляет меня и лишь подчеркивает мои мысли об этой библиотеке JavaScript.