Как утешить лог имя переменной / функции?

1

Я хочу сделать это: log(variableOrFunction)

И иметь возможность произвести это: variableOrFunction: actualValue.

Я попробовал это:

export const log = (value) => {
  console.log('' + value + ':', value)
  console.log(value)
}

Но я получаю это вместо: [object Object]:

Что правильно делать?

Теги:

5 ответов

4
Лучший ответ

Вы можете зарегистрировать их с помощью пары фигурных скобок ({}), которая создаст объект с именем переменной в качестве ключа:

function someFunction() {};

const someOtherFunction = () => {};

const someValue = 9;

console.log({someFunction});
console.log({someOtherFunction});
console.log({someValue});

const renamed = someFunction;

console.log({renamed})
  • 0
    Отличное решение, но работает не во всех браузерах
  • 0
    @drkibitz Это функция es6, поэтому она должна работать везде, где поддерживается es6. Можете ли вы уточнить, если вы имеете в виду, что некоторые браузеры не поддерживают es6 в целом или они не поддерживают эту функцию в частности?
Показать ещё 5 комментариев
2

"Значение" относится к типу Object. Используйте JSON.stingify, чтобы узнать подробности,

export const log = (value) => {
  console.log('' + value + ':', JSON.stringify(value))
  console.log(JSON.stringify(value))
}
2

Вы не можете добиться этого в интерпретаторе JS так, как вы описали. Невозможно получить имя переменной внутри вашей функции журнала.

Вы можете делать это только внутри вызывающей функции вашего журнала, преобразовывая вызывающую функцию в строку и анализируя код и захватывая имя переменной, переданное вашей функции журнала.

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

2

Если "value" имеет тип Object. Вы можете попробовать console.dir (значение) вместо длинного console.log, и вы должны иметь возможность видеть пары дерева объектов: пары значений в лучшем formate в консоли

1

Будет ли это работать для вас?

const log = function() {
  const key = Object.keys(this)[0];
  const value = this[key];
  console.log('${key}:${value}');
}

let someValue = 2;

log.call({someVlaue}); //someValue:2

Работает с функцией тоже, даже сама.

log.call({log});

// It would return the following
log:function() {
  const key = Object.keys(this)[0];
  const value = this[key];
  console.log('${key}:${value}');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню