簡體   English   中英

console.log 不打印任何內容,但返回 undefined

[英]console.log doesn’t print anything but returns undefined

我制作了一個腳本,將我在 duolingo 上學習的所有句子抓取到一個 console.log 輸出中。 直到最近,當 console.log 開始以一種奇怪的方式運行時,它才完美運行:

console.log("Hello\tWorld")
undefined

我在 console.log 中輸入的任何內容都不會被打印出來

console.log(document)
undefined

這只發生在這個特定的頁面上: https : //www.duolingo.com/practice (你需要登錄)

它甚至是一件事嗎? 在您的頁面上阻止像 console.log 這樣的功能,阻止它打印任何結果?

盡管如此,有沒有辦法在控制台中打印一些東西?

如果您在console中鍵入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.verbosetrue

這意味着您可以通過將其添加到腳本頂部來有效地重新啟用 console.log():

window.verbose = true;

僅供參考,截至本文發布時,Duolingo 頁面是最重要的:

console.log()
console.error()

但不是:

console.info()
console.warn()

因此,您還可以使用后兩個函數中的任何一個來代替前兩個函數,而無需進行任何其他修改。

不,它沒有。 console.log()是一個void -return 函數,這意味着它不返回任何值(此處為 spec )。

因此,當您在 Chrome 的控制台中運行此程序時,字符串(即Hello\\tWorld )會正確記錄到控制台,但 Chrome 還會報告該函數的返回值,該值undefined因為console.log()不返回任何內容.

您可以在下面的屏幕截圖中看到 Chrome 正確地將Hello Word記錄到控制台,然后返回undefined

在此處輸入圖片說明

“未定義”只不過是您調用的函數的返回。 它打印字符串但是因為它不返回任何內容,所以控制台閃爍未定義。

試試

function abc(){return 2}

現在,當您調用 abc() 時,它將顯示 2(未定義)

我在 Chrome 中遇到了同樣的問題。 然后我注意到在 Filter 旁邊,就在控制台提示的上方,它說“全部隱藏”,這會抑制由 console.log() 打印的消息。 我將其更改為“默認”,問題就消失了。 這與返回類型無關,如前所述,返回類型是無效的。 這只是 Chrome 過濾輸出。

我使用了console.info而不是console.log

后者至今仍未在該特定頁面上返回任何內容。

嘗試恢復默認設置並重新加載控制台。 #document 將重新出現在控制台窗口的第一行中,您就大功告成了。

設置 > 首選項 > 選項卡底部的按鈕“恢復默認值並重新加載”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM