SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Мистика typescript или почему происходит такая чуш?

Делаю калькуляцию с помощью 30 функций.
Хочу отладить ее на определенном шаге, но на любой из функции в цепочке последовательностей получаю одинаковы резултат.

Условный пример:
firstFunc(Parabola): object {
var sum = Parabola.a+Parabola.b;
var obj = {a: sum}
console.log(obj)
return obj;
}

secondFunc(Parabola):object {
var firstResult = this.firsnFunc(Parabola);
firstResult['newElement'] = 1;
}
final(Parabola) {
return this.secondFunc(Parabola);
}
final(Parabola);


И в консоле мы получим:
Условно
{a: 2, newElement: 1}

а = 2 это условно. Соль в том, что я не могу понять почему он выводит в консоле еще и "newElement: 1", ведь это делается до вызова второй функции.

Я уверен что у меня не правельная конструкция функций. Посоветуйте как исправить подобное. Не могу выложить оригинал, тк там ногу сломать можно!
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
В консоли браузера помимо вывода результата obj.toString(), вы получаете ссылку на объект и можете посмотреть его текущее состояние. Но вы же смотрите консоль уже после выполнения второй функции. Поставьте точку останова в нужном месте и увидите значение в момент выполнения конкретной строки.

Чтобы в консоль выводились значения на момент вызова console.log, надо выводить либо значения конкретных свойств объекта(если конечно это не мутируемые вами в дальнейшем объекты), либо выводить значения в новом объекте(опять же, только если свойства примитивные значения):
console.log({ ...obj });
либо конвертировать целевой объект в JSON строку:
console.log(JSON.stringify(obj));
console.log(JSON.stringify(obj, null, ' ')); // красивый вывод с отступами
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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