Я столкнулся с чем-то странным (вероятно, нет, скорее всего, я этого не понимаю) в JavaScript, и мне было бы любопытно узнать, почему вещи ведут себя именно так.
Когда я делаю:
var index = '1';
index++;
alert(index);
index = index + 1;
alert(index);
index = true ? index + 1 : 0;
alert(index);
как и в http://jsfiddle.net/5mdmJ/, оповещения будут "2", "3", "4"
Когда я отменяю порядок и делаю это (http://jsfiddle.net/5mdmJ/1/):
var index = '1';
index = true ? index + 1 : 0;
alert(index);
index = index + 1;
alert(index);
index++;
alert(index);
У меня будет "11", "111" и "112".
Я знаю, что это что-то с индексом, являющимся строкой, но я действительно не понимаю, почему он полностью типизирован int в примере 1 и типизирован строкой во втором примере. Я знаю, что это, вероятно, будет очень просто, но я не смог найти ничего, что действительно проясняло бы мне логику того, что происходит. Тип меняется? Почему и когда это происходит?
Спасибо за любую подсказку или статью или что-то еще!