Ваш код в более простой форме потенциально может привести к коду этой формы, когда определено words[splitted[i]]
:
x = x++;
x++
возвращает значение x, а , затем увеличивает его, а затем устанавливает возвращаемое значение на x
. Это контрастирует с
x = ++x;
где x сначала увеличивается, а затем оценивается.
Чтобы увидеть, как это работает, посмотрите на следующий код:
x = 1;
y = 1;
z = 1;
x = x++;
y = ++y;
z = z += 1;
alert(x); // 1
alert(y); // 2
alert(z); // 2
В любом случае, я думаю, что вы действительно хотите сделать что-то вроде этого:
(typeof words[splitted[i]] !== 'undefined') ?
words[splitted[i]]++ :
words[splitted[i]] = 1;
Это больше строк, но может быть более читабельным:
if (typeof words[splitted[i]] !== 'undefined') {
words[splitted[i]] = 0
}
words[splitted[i]]++;