Он выводит ровно в том порядке в каком ты выводишь, значения в переменных будут те же при любом порядке деструктуризации и любом порядке ключей в оригинальном объекте
Он во всех языках один смысл имеет. Код внутри него выполняется до тех пор, пока условие истинно. Есть ещё while do, когда код один раз точно отработает, а дальше уже как пойдёт