Произойдет что-то вроде такого:
Человек, возможно не очень хорошо знающий нюансы языка, просматривающий код в поисках чего-то необходимого ему вместо того, чтобы пропустить этот фрагмент в фоновом режиме (что следовало бы делать), споткнется о не совсем понятный ему оператор. У него возникнет вопрос, почему тут используется префиксный инкремент, а не постфиксный. Он усомнится в своих знаниях нюансов языка (быть может). Вруг еще полезет гуглить. В любом случае, поток мыслей его прервется из-за использования нестандартного элемента в стандартной ситуации.
Я, кстати, не против использовать в этом контексте i++. Но, поскольку использую JSLint, пишу без варнингов, просто чтобы не пропустить чего-то действительно важного. Плюсы очевидны — операции инкремента всегда однообразны, что не заставляет читателя кода каждый думать о несущественном с одной стороны, а с другой стороны — дает мне, как пишущему программу, понять, что код — это не место для соревнования, кто хитрее напишет. Лично я против любой самодеятельности типа ++i там где можно обойтись i += 1. Но вообще говоря, если принятый стандарт требует обратного — я буду так же ратовать за использование ++i. Главное, чтобы везде было одинаково и не возникало вопросов, ни как писать, ни как читать такой код.
Думаю, так понятнее для нубов. Кроме того, JSLint предупреждает, что использовании анонимых функций в циклах. Ваш пример с точки зрения JSLint'a должен быть таким:
for (var x = 1; x < 10; x += 1) {
setTimeout(function (x) {
return function () {
console.log(x);
};
}(x), 0);
}
Если уже выработан командный стиль, подразумевающий отсутствие точек с запятой, то тут уж не попишешь ничего — придется следовать. Но это ограничит рамки команды людьми которые либо уже в команде, либо не особо опытны в javascript и не имеют привычки ставить точки с запятой. Это касательно командной работы.
Касательно yui сказать не могу, т.к. пользуюсь другими инструментами (packer, jsmin), которые требуют расстановки запятых. Не знаю, можно ли доверить машине расставить точки с запятой.
Уже прикручено как минимум в Eclipse\Aptana\NetBeans. Про Visual Studio сказать не могу, так как не юзал. Вот тут говорят, что есть и для VS: www.codeproject.com/KB/macros/JSLintVS.aspx
Для использования jQuery я пишу /*global jQuery, $ */ и JSLint не ругается. По сути же jQuery — это две глобальные переменные, не на что там больше ругаться. Вообще говоря, по jQuery и правилам хорошего тона использования можно еще целую статью написать.
IE не любит запятые после последнего элемента массива или члена объекта. Бывает, что именно на это и указывает jslint: var a = [1,2,3,]; Хотя для других браузеров все ок.
Думаю, количество предупреждений зависит от реализации. Плагин для jEdit у меня выдает 51 ошибку, потом останавливается с фразой — слишком много ошибок.
Во-первых side-effects. Чтобы код можно было сжать точки с запятой должны стоять везде где надо. В javascript необязательность точки с запятой иногда достигается за счет того, что перевод строки считается за разделитель.
Во-вторых, при командной работе важен единый стиль. Код оформленный правильно, выглядит надежнее и в нем лучше видны ошибки.
Согласен, бывает и такое. JSLint ругается больше чем надо, этим и ценен. Лучше обратить внимание на его замечание и проигнорировать, чем не обратить внимание на ошибку.
временно такая демка
Почитать можно на lib.ru
Настоятельно рекомендую к прочтению. Хармс настолько хорош, что и сказать об этом ничего нельзя :)
9: Javascript Events
В этом скринкасте Peter-Paul Koch очень доходчиво говорит про события. Мне вчера очень помогло, может и вам поможет.
++
и--
Но и
++i
в данном контексте сбивает с толку. Согласитесь, что для цилклов стандартнее i++Человек, возможно не очень хорошо знающий нюансы языка, просматривающий код в поисках чего-то необходимого ему вместо того, чтобы пропустить этот фрагмент в фоновом режиме (что следовало бы делать), споткнется о не совсем понятный ему оператор. У него возникнет вопрос, почему тут используется префиксный инкремент, а не постфиксный. Он усомнится в своих знаниях нюансов языка (быть может). Вруг еще полезет гуглить. В любом случае, поток мыслей его прервется из-за использования нестандартного элемента в стандартной ситуации.
Я, кстати, не против использовать в этом контексте i++. Но, поскольку использую JSLint, пишу без варнингов, просто чтобы не пропустить чего-то действительно важного. Плюсы очевидны — операции инкремента всегда однообразны, что не заставляет читателя кода каждый думать о несущественном с одной стороны, а с другой стороны — дает мне, как пишущему программу, понять, что код — это не место для соревнования, кто хитрее напишет. Лично я против любой самодеятельности типа ++i там где можно обойтись i += 1. Но вообще говоря, если принятый стандарт требует обратного — я буду так же ратовать за использование ++i. Главное, чтобы везде было одинаково и не возникало вопросов, ни как писать, ни как читать такой код.
Касательно yui сказать не могу, т.к. пользуюсь другими инструментами (packer, jsmin), которые требуют расстановки запятых. Не знаю, можно ли доверить машине расставить точки с запятой.
Первый вывод — это результат выполнения команд в консоли, который получается немедленно, далее — то что по таймеру.
Надо бы встроить в браузер JSLint, чтобы показывал ошибки такого рода :)
Думаю, количество предупреждений зависит от реализации. Плагин для jEdit у меня выдает 51 ошибку, потом останавливается с фразой — слишком много ошибок.
Во-вторых, при командной работе важен единый стиль. Код оформленный правильно, выглядит надежнее и в нем лучше видны ошибки.