Błąd "unexpected ++" w jslint [duplikat]

To pytanie ma już odpowiedź tutaj:

Co na najlepsza praktyka w tym zakresie?

Jslint wyjaśnia, że "dodaje zamieszanie". Naprawdę tego nie widzę...

EDIT: kod, zgodnie z żądaniem:

  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];
        }
    }
  }
Author: KdgDev, 2010-06-08

8 answers

Użyj i += 1 zamiast tego, jeśli chcesz postępować zgodnie z radami jslinta.

 92
Author: unomi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 17:53:14

Po prostu dodaj /*jslint plusplus: true */ przed swoim plikiem javascript.

 88
Author: Rico Sonntag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-18 11:17:59

Aby uniknąć nieporozumień i ewentualnych problemów podczas korzystania z minifigurek, zawsze owijaj nawiasy wokół operatora i jego operandu, gdy są używane razem z tym samym (+ lub -).

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

To dodaje i I j (i zwiększa i jako efekt uboczny), powodując alarmowanie 0.

Ale co to jest ktoś przychodzi i przesuwa przestrzeń?

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

Teraz to najpierw zwiększa j, a następnie dodaje i do nowej wartości j, w wyniku czego 1 jest alarmowany.

To może być łatwo rozwiązane przez doing

var i = 0, j = 0;
alert((i++) +j); 
Nie można tego pomylić.
 28
Author: Sean Kinsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 19:01:52

Osobiście wolę umieszczać wypowiedzi takie jak i++ na linijce same. Włączenie ich jako części większego oświadczenia może powodować zamieszanie dla tych, którzy nie są pewni, co linia powinna robić.

Na przykład zamiast:

value = func(i++ * 3);

Zrobiłbym to:

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

Oznacza to również, że ludzie nie muszą pamiętać, jak działają i++ i ++i, i eliminuje potrzebę stosowania tak wielu zasad preferencji.

 14
Author: Samir Talwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-07 13:44:43

Prawdziwym problemem operatora ++ jest to, że jest on operatorem z efektami ubocznymi i dlatego jest całkowicie przeciwny zasadzie programowania funkcyjnego.

" functional " sposób implementacji i++ to i = i + 1 gdzie jawnie przypisujesz zmienną bez skutków ubocznych, a następnie jej używasz.

Możliwość pomyłki jest taka, że ++ robi dwie rzeczy, dodając wartość i przypisując ją do zmiennej.

 9
Author: benzonico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 17:49:52

Jslint friendly loop

for (i = 0; i < 10; i += 1) {
    //Do somthing
}
 7
Author: GeographicPerspective,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 22:33:44

Należy pamiętać, że operator ++ zależy od pozycji względem zmiennej prevent / next i średnika nowej linii, aby określić kolejność operacji.

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
 4
Author: miketheprogrammer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-01 16:27:05

Istnieje coś, co nazywa się pre-increment: ++i I post-increment i++ i jest różnica:

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
 3
Author: Paul Scheltema,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 17:50:39