let a = 3, b = 5;
a = a + b; b = a - b; a = a - b; // a=5, b=3 — риск переполнения в других языках
a = a ^ b; b = a ^ b; a = a ^ b; // для целых
[a, b] = [b, a]; // идиоматичный JS
Рекомендация
В JS используйте деструктуризацию — читаемо и без трюков. XOR/арифметику знайте как классику собеса.
Объекты/ссылки
«Без temp» имеет смысл для примитивов; для объектов вы всё равно меняете привязки имён.
Как поменять два числа местами без временной переменной? · Sobeso