Прежде всего, я знаю, что выражения, о которых говорилось позже, имеют side-effects и не должны использоваться в рабочей среде. Я просто хочу понять через них JavaScript. Все они тестируются под Chrome.
var a = 42;
var b = "42";
a + ++b; // result is 85
Вот мое понимание a + ++b,
Prefix Increment (++) (приоритет 15) имеет более высокий приоритет, чем Addition(+) (приоритет 13) в соответствии с приоритетом оператора. ++b можно разобрать var ToNumber(GetValue(expr)) до 43, обратитесь к 12.5.7 Prefix Increment Operator. Тогда результатом a + 43 может быть 85.
Однако
var a = 42;
var b = "42";
a++ + b; // "4242"
Почему результатом a++ + b является "4242"?
Я пытаюсь понять результат "4242", кажется, что a++ возвращает 42 во-первых, тогда для 42 + '42' 42 будет '42' var ToString(), во-первых, обратитесь к 12.7.3 The Addition operator ( + ). то результатом может быть "4242".
Но, похоже, это нарушает правило: Postfix increment (приоритет 16) выше Addition (приоритет 13)???
var a = 42;
var b = "42";
a +++b; // "4242"
Как анализируется a +++b;?