Ошибка "неожиданного ++" в jslint

Что такое лучшая практика для этого?

Jslint объясняет, что это "добавляет путаницу". Я этого не вижу...

EDIT: Код, по запросу:

  var all,l,elements,e;
  all = inElement.getElementsByTagName('*');
  l = all.length;
  elements = [];
  for (e = 0; e < l; (e++))
  {
    if (findIn)
    {
        if (all[e].className.indexOf(className) > 0)
        {
            elements[elements.length] = all[e];
        }
    } else {
        if (all[e].className === className)
        {
            elements[elements.length] = all[e];
        }
    }
  }

Ответ 1

Используйте i += 1 вместо этого, если вы хотите следовать советам jslint.

Ответ 2

Просто добавьте /*jslint plusplus: true */ перед вашим файлом javascript.

Ответ 3

Чтобы избежать путаницы и возможных проблем при использовании minifiers, всегда обменивайте parens вокруг оператора и его операнда при использовании вместе с тем же (+ или -).

var i = 0, j = 0;
alert(i++ +j);

Это добавляет я и j (и увеличивает я в качестве побочного эффекта), в результате чего появляется предупреждение 0.

Но что кто-то приходит и перемещает пространство?

var i = 0, j = 0;
alert(i+ ++j);

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

Это можно легко решить, выполняя

var i = 0, j = 0;
alert((i++) +j); 

Теперь это не может быть ошибкой.

Ответ 4

Лично я предпочитаю ставить такие выражения, как i++ в строке. Включение их как части более крупного заявления может вызвать путаницу для тех, кто не уверен, что должна делать линия.

Например, вместо:

value = func(i++ * 3);

Я бы сделал это:

value = func(i * 3);
i++;

Это также означает, что люди не должны помнить, как работают i++ и ++i, и устраняет необходимость применения довольно большого количества правил предпочтений.

Ответ 5

Реальная проблема оператора ++ заключается в том, что он является оператором с побочными эффектами и, следовательно, полностью противоположно принципу функционального программирования.

"Функциональный" способ реализации i++ будет i = i + 1, когда вы явно переназначаете переменную без побочных эффектов, а затем ее используете.

Возможность путаницы заключается в том, что ++ выполняет две вещи, добавляя значение И переназначая его переменной.

Ответ 6

JSLint дружественный цикл

for (i = 0; i < 10; i += 1) {
    //Do somthing
}

Ответ 7

Обратите внимание, что оператор ++ зависит от позиции по отношению к предыдущей/следующей переменной и новой строки/точки с запятой для определения порядка операций.

var a = 1;
var b = a++;
console.log(b); // b = 1
console.log(a); // a = 2

var a = 1;
var b = ++a;
console.log(b); // b = 2
console.log(a); // a = 2

Ответ 8

Есть что-то, называемое pre-increment: ++ я и post-increment я ++ и есть разница:

var i = 9;
alert(++i); //-> alerts 10

var j = 9;
alert(j++); //-> alerts 9
alert(j);   //-> alerts 10 now, as expected

var k = 9;
alert((k++)); //-> still alerts 9 even with extra parentheses