2014-12-25 5 views
1

According to this precedence table Приращение имеет высокий приоритет, чем операторы сравнения. И все же, когда я увеличиваю и сравниваю в одном выражении, сначала оценивается сравнение. Почему это?Javascript: Как происходит сравнение операторов сравнения перед оператором приращения postfix?

var i = 0, k = 0; 
console.log(i === k); 
>true 
console.log(i++ === k); 
>true 
>false 

Как оценивают операторы сравнения перед оператором приращения приращения?

ответ

3

Так работает оператор post-increment. Он использует переменную в выражении, а затем увеличивает. Если вы хотите, чтобы приращение произошло первым, вы должны использовать оператор Преинкремента так:

console.log(++i === k); 
5

приращение постфикса действительно оцененный первым, перед сравнением, и поэтому таблица предпочтения правильно. Но значение оценки приращения postfix не является добавочным значением, это значение перед приращением. Это, как указал Адам, предполагаемое поведение притчического приращения.

+0

Спасибо - я пытался объяснить, почему таблица была правильной, но не могла попасть туда. Спасибо +1 –

1

Вы вводите в заблуждение приоритет функциональности. Оператор приращения Postfix имеет более высокий приоритет, чем оператор приращения префикса, и поэтому он обрабатывается первым. Именно функциональность оператора приращения префикса определяет, что он должен увеличиваться после возвращения. Это не вопрос приоритетности.

Смежные вопросы