Я сделал сценарий, чтобы захватить все предложения, которые я изучаю на дуолинго, в один единственный вывод console.log. Он отлично работал до недавнего времени, когда console.log начал вести себя странным образом:
console.log("Hello\tWorld")
undefined
все, что я набираю в console.log, не печатается вообще
console.log(document)
undefined
это происходит только на этой странице: https://www.duolingo.com/practice (вам необходимо войти в систему)
Это даже вещь? для блокировки функции, такой как console.log на вашей странице, не позволяя вообще распечатать какой-либо результат?
есть ли способ распечатать что-то в консоли, несмотря на это?
Я использовал console.info
вместо console.log
.
Последний по-прежнему не возвращает ничего по сей день на этой конкретной странице.
Нет, нет. console.log()
- это функция void
-return, что означает, что она не возвращает никаких значений (spec здесь).
В результате, когда вы запускаете это в консоли Chrome, строка (т. Hello\tWorld
) корректно регистрируется на консоли, но Chrome также сообщает значение возвращаемой функции, которое не undefined
поскольку console.log()
ничего не возвращает,
Вы можете видеть на скриншоте ниже, что Chrome правильно регистрирует Hello Word
на консоли, а затем возвращает undefined
:
void
-return, означающая, что она ничего не возвращает (следовательно, возвращение не undefined
- что не совпадает с null
).
Если вы введете 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()
Таким образом, вы можете также использовать любую из двух последних функций вместо первых двух без каких-либо других модификаций.
У меня была такая же проблема в Chrome. Затем я заметил, что рядом с фильтром, чуть выше подсказки консоли, он сказал "Скрыть все", что подавляет сообщения, напечатанные console.log(). Я изменил это на "Default", и проблема исчезла. Это не имеет ничего общего с типом возврата, который, как отмечено, недействителен. Это просто Хром, фильтрующий выход.
"undefined" - это не что иное, как возврат функции, которую вы вызвали. его печать строки, но поскольку она ничего не возвращает, так что консольные вспышки не определены.
пытаться
function abc(){return 2}
теперь, когда вы вызываете abc(), он покажет 2 (не определено)
console.log
вызван из кода иundefined
записывается в консоль?console.log()
имеет ничего общего с возвращаемым значением. На самом деле, это так в случае с maaaaany. Не смущайтесь.