Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
if .. else, однако это не «ошибка», как вы пишете, а именно стиль оформления кода.function и скобкой. JSLint это отлавливает.
(function(){
var t = +new Date(), x = true;
for( var i = 1000000;--i;){
x = Boolean(x);
}
console.log(-(t-(t=new Date())));
for( var i = 1000000;--i;){
x = !!x;
}
console.log(-(t-(t=new Date())));
})();
!!x — читается как магия; Boolean(x) — все понятно ;)for (var i = 0; i < 3; i++) {
setTimeout(function () {
alert(i);
}, 100);
}
var data = [];
for(var idx = 0; idx < 5; idx++) {
var curr = function() { alert(idx); };
data.push(curr);
}
for(var idx = 0; idx < 5; idx++) {
data[idx]();
}
var data = [];
for(var idx = 0; idx < 5; idx++) {
var curr = function() { alert(idx); };
data.push(curr);
}
for(var jdx = 0; jdx < 5; jdx++) {
data[jdx]();
}
// fast convert to boolean, а если не важна, то просто его не использовать.Boolean(x) === false — читаемее, хоть запись и получается длиннее.!!x, и уж точно побитовые операции на вроде вашей +new Date() или всякие ~array.indexOf(x) стоит использовать только в больших циклах, где такая экономия на спичках имеет хоть какой-то смысл.if (Boolean(arr.length) === false) {
...
}
if (!arr.length) {
...
}
!arr.lengthif (arr.length === 0) {
...
}
false, 0 или вовсе undefined, вот тут я все же использую if (obj.param) {}0 и undefined — это совершенно разные вещи и в одном условии я оба сразу не проверяю. Нет кейсов.false в качестве ответа от сервера. Но так же сервер и вовсе может не установить в качестве ответа ничего. А когда мы знаем, что, возможное значение — число, пусть даже 0, то это совсем другой разговор. Так что все это частные случаи.Boolean(x) === falsefalse === Boolean(x)if (x = 2) {} вызывает ошибку. Я же не заставляю никого писать так, как нравится мне, и как пишет команда автора из Яндекса, а у них-то наверное больше аргументов на счет явного приведения типов.
К пробелам и деталям типа «типов в языках со слабой типизацией» либо не привязывались, .
либо проверяли линтерами и прочими инструментами
Мне попадались команды, где разработанные инструменты тут же становились общим достоянием.
JSCS: JavaScript Code Style