While без фигурных скобок

Функция Эйлера. Почему работает while без фигурных скобок?

function properFractions2(n) {
    if (n==1) return 0; 
    let result = n;
    for (let i = 2; i * i <= n; ++i) {
        if (n % i == 0) {
            while (n % i == 0) 
              n /= i; 
              result -= result / i; 
            
        } 
    }
    if (n > 1) result -= result / n; 
    return result;
}

А с фигурными скобками совсем другой результат. И почему отдельный while не работает без фигурных скобок?

let t = 0;

while (t < 10) {

  console.log(t);

  t += 1;
}

Ответы (1 шт):

Автор решения: Vladimir Ignatenko

Фигурный скобки определяют блок, который выполняется в цикле. Если фигурные скобки не используются, то блоком является один единственный оператор.

Т.е. если есть код

var t = 10;
while(t > 0) {
  t--;
  console.log(t)
}

То так как указаны скобки, то операции декремент переменной и вывод значения будут выполняться в цикле. В результате будут выведены значения от 9 до 0

Если же не использовать скобки

var t = 10;
while(t > 0) 
  t--;
console.log(t)

То в цикле будет выполянятся только оператор декремента. А вывод значения будет сделан уже после цикла. В результате этот код выведет только 0

→ Ссылка