console.log ничего не печатает, но возвращает undefined

2

Я сделал сценарий, чтобы захватить все предложения, которые я изучаю на дуолинго, в один единственный вывод console.log. Он отлично работал до недавнего времени, когда console.log начал вести себя странным образом:

console.log("Hello\tWorld")
undefined

все, что я набираю в console.log, не печатается вообще

console.log(document)
undefined

это происходит только на этой странице: https://www.duolingo.com/practice (вам необходимо войти в систему)

Это даже вещь? для блокировки функции, такой как console.log на вашей странице, не позволяя вообще распечатать какой-либо результат?

есть ли способ распечатать что-то в консоли, несмотря на это?

  • 0
    Не могу воспроизвести. Вы вводите это непосредственно в консоль, или console.log вызван из кода и undefined записывается в консоль?
  • 0
    Вы должны понимать, что функциональность console.log() имеет ничего общего с возвращаемым значением. На самом деле, это так в случае с maaaaany. Не смущайтесь.
Показать ещё 1 комментарий
Теги:
console.log

5 ответов

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

Я использовал console.info вместо console.log.

Последний по-прежнему не возвращает ничего по сей день на этой конкретной странице.

1

Нет, нет. console.log() - это функция void -return, что означает, что она не возвращает никаких значений (spec здесь).

В результате, когда вы запускаете это в консоли Chrome, строка (т. Hello\tWorld) корректно регистрируется на консоли, но Chrome также сообщает значение возвращаемой функции, которое не undefined поскольку console.log() ничего не возвращает,

Вы можете видеть на скриншоте ниже, что Chrome правильно регистрирует Hello Word на консоли, а затем возвращает undefined:

Изображение 174551

  • 0
    Возвращаемое значение функции "неопределено" или ничего не возвращается? не может быть и то и другое
  • 0
    Нет, это функция void -return, означающая, что она ничего не возвращает (следовательно, возвращение не undefined - что не совпадает с null ).
Показать ещё 1 комментарий
0

Если вы введете console в консоли, вы увидите что-то вроде:

log: ƒ ()
    ...
    [[FunctionLocation]]: app-676b15de.js:formatted:54288

Это означает, что функция console.log() переопределяется app-676b15de.js. Если вы посмотрите в этот файл, вы увидите это:

window.console && fY.forEach(function(e) {
    var t = console[e];
    console[e] = function() {
        for (var e = [], n = 0; n < arguments.length; n++)
            e[n] = arguments[n];
        (k() || window.verbose) && Function.prototype.apply.apply(t, [console, e])
    }
})

Последняя строка запрещает выполнение консольных функций, если k() или window.verbose имеют значение true.

Это означает, что вы можете снова активировать console.log(), добавив это в начало вашего скрипта:

window.verbose = true;

К вашему сведению, на момент написания этой статьи страница Duolingo имеет приоритет:

console.log()
console.error()

но нет:

console.info()
console.warn()

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

0

У меня была такая же проблема в Chrome. Затем я заметил, что рядом с фильтром, чуть выше подсказки консоли, он сказал "Скрыть все", что подавляет сообщения, напечатанные console.log(). Я изменил это на "Default", и проблема исчезла. Это не имеет ничего общего с типом возврата, который, как отмечено, недействителен. Это просто Хром, фильтрующий выход.

0

"undefined" - это не что иное, как возврат функции, которую вы вызвали. его печать строки, но поскольку она ничего не возвращает, так что консольные вспышки не определены.

пытаться

function abc(){return 2}

теперь, когда вы вызываете abc(), он покажет 2 (не определено)

Ещё вопросы

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