JavaScript: Как работает сравнение с одновременным присваиванием?

Рейтинг: 0Ответов: 0Опубликовано: 31.05.2023

Объясните, пожалуйста, как и почему этот код работает:

let old_val : number = 0;
const check = (new_val: number) : boolean => old_val === (old_val = new_val);

По идее, в моём понимании, сначала должна выполниться операция присваивания, после которой в переменную old_val запишется значение new_val и сама операция присваивания вернёт обновленное значение old_val для последующего сравнения. Но к моменту сравнения old_val уже должна быть равна new_val, и потому данная функция всегда должна возвращать true. Однако эта конструкция работает иначе. Она возвращает true, если значение старое, и false, если значение новое и обновляет старое. Я не могу понять как она работает на уровне операций с памятью.

Ответы

Ответов пока нет.