• Нужно вывести числа в заданном диапазоне. Почему выводит результат не при всех задаваемых значениях?

    AngReload
    @AngReload
    Кратко о себе
    Это конечно говнокод, но ошибка только одна:
    var n = prompt('введите начальное число диапозона', '0');
    var k = prompt('введите конечное число диапозона', '0' );

    prompt возвращает строки а не числа, поэтому нужно конвертировать в число, например так:
    var n = parseInt(prompt('введите начальное число диапозона', '0'), 10);
    var k = parseInt(prompt('введите конечное число диапозона', '0' ), 10);

    через Number или parseInt.

    Вообще, полезно знать разницу при сравнении чисел и строк:
    9 < 10 // true
    '9' < '10' // false
    Во втором случае получается «ложь», потому что строки сравниваются по кодам символов, начиная с первого символа, те '9' < '1'. Смотрим коды символов:
    '9'.charCodeAt(0) // 57
    '1'.charCodeAt(0) // 49
    57 больше 49, поэтому сравнение заканчивается, выдавая значение false.
    Поэтому условие цикла n <= k работает не как ожидается.
    Ответ написан
    1 комментарий