Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Однажды кто-то написал мне: «В языке есть оператор switch, в котором можно проваливаться из одного case-выражения в другое, и это достаточно трудно увидеть, читая код. Не могли бы вы добавить предупреждение в JSLint для таких случаев?». Я подумал и ответил, что есть моменты, когда подобные провалы могуть быть удобными. Можно прямо в коде помечать, что так и задумывалось, хотя на самом деле, вы знаете, это не работает. Возможно, в качестве компромисса имеет смысл оставить всё как есть. В конце концов, неплохо иметь такой оператор в языке.
На следующий день тот же парень прислал мне сообщение об ошибке в работе JSLint. Я запустил отладчик и обнаружил ошибку в switch-операторе, где case-выражение проваливалось в следующее. [Смех в зале.]
В тот момент ко мне пришло озарение. В карьере программиста бывают моменты, когда вы действительно что-то постигаете. И это постижение трудно даётся. Тогда я получил урок. Теперь я никогда сознательно не даю case-выражениям проваливаться. Благодаря этому я сейчас могу легче замечать случайные провалы case-выражений. Как следствие, я думаю, что моё использование switch-оператора значительно улучшилось.
(function($){ /*ништячный плагин*/ })(jQuery)(function($){ /*плагин 1*/ })(jQuery)(function($){ /*плагин 2*/ })(jQuery) и т.п. for (x = 1; x < 10; x += 1) {
setTimeout(function () {
console.log(x);
}, 1000);
}
for (var x = 1; x < 2; x += 1) {
setTimeout(function () {
console.log('x = ' + x);
}, 2000);
}
'stop';
if ((result = try_to_fetch_result())) {
do_something_with_result(result);
}
int a = getValue(); if (a = 0) { /*code*/ };int a = getValue(); if (0 = а) { /*code*/ };hasOwnProperty в конструкции for (var in object). В остальном, «специалист» долго дрючил мне мозги за лишние точки с запятой: после function, for,… и лишние пробелы в конструкциях типа if (element.parentNode && Math.max(offset1, offset2, offset3) > x1).
for (var x = 1; x < 10; x += 1) {
setTimeout(function (x) {
return function () {
console.log(x);
};
}(x), 0);
}
++ и --++i в данном контексте сбивает с толку. Согласитесь, что для цилклов стандартнее i++~~(какие-то вычисления)Оказалось двойное отрицание — это просто конверсия числа в int. Вместо Math.floor() для экономии размера кода.
var str = '10'; alert(typeof +str); // number
Повышение качества javascript кода. JSLint