javascript цикл while

нужно получить все степени тройки не превышающие 100.


    var x = 3;
    while(x < 100) {
       console.log(x);
       x = x * 3;
    }
var x = 3;
while(x < 100) {
   console.log(x);
   x = x * 3;
}

 3
 9
 27
 81
243

у меня так выдаёт. Почему? Или это глюк гугла? что я не так написал?


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

Автор решения: vsemozhebuty

Если вы запустите этот код в отдельном файле, скажем в Node.js или внутри HTML-страницы, он выдаст правильный результат. Но если вы его запустите в консоли браузера или в REPL Node.js, последняя цифра (243) будет результатом не console.log(x); — запуск в консоли выводит под конец результат последнего вычисления, так что это будет результат x = x * 3;.

В песочнице работает правильно:

'use strict'

var x = 3;
while(x < 100) {
   console.log(x);
   x = x * 3;
}

Если вы запустите в консоли этот вариант, то увидите, что после добавочного вывода просто выводится undefined, то есть результат, возвращаемый console.log('End');.

'use strict'

var x = 3;
while(x < 100) {
   console.log(x);
   x = x * 3;
}
console.log('End');
→ Ссылка