Почему меняется порядок аргугментов при выполнении цикла в JS?

Метод "класса" Range - show исполняется до того, как до него дойдет цикл. Вероятно, (да, я знаю, глупо звучит) даже до того, как начинается цикл, я вставил в цикл debugger, и в нуле уже в консоли r.show() была исполнена.
В чем проблема?
Полагаю, хеллоуворлды сюда не надо, но все же прошу помощи.
var Range = function (from, to) {
    this.from = from;
    this.to = to;
};

Range.prototype = {
    includes: function (x) { return this.from <= x && x <= this.to; },
    toString: function () { return "(" + this.from + "..." + this.to + ")"; },
    show: function () {
        for (var x = this.from; x <= this.to; x++) {
            console.log(x);
        };
    }
};

var main = function () {
    var r = new Range(1,6);
    var actions = [
        r.from,
        r.to,
        r.toString(),
        r.includes(3),
        r.show()
    ];
    for (var i = 0; i < actions.length; i++) {
        console.log(actions[i]);
    }
};

main();


01.png
  • Вопрос задан
  • 2585 просмотров
Решения вопроса 1
Tyranron
@Tyranron
Потому что метод .show() вызывается при создании массива actions, и результат вызова .show() становится последним элементом этого массива.
В цикле же, Вы просто выводите значения массива, которые были сформированы при создании этого массива в результате обращений к свойствам и вызовов методов этого объекта.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы