簡體   English   中英

Javascript 關閉 - 為什么未顯示未定義?

[英]Javascript Closure - Why isn't undefined displayed?

我試圖了解 Javascript 中的閉包是如何工作的。 在最后一行,如果我輸入 sayHi("Hello")("John Doe"),控制台將按預期顯示“HelloJohn Doe”。

現在,如果我刪除(“John Doe”),控制台為什么會變成空白而不是顯示“Helloundefined”?

    function sayHi(whattosay){
        return function yolo(name) {
            console.log(whattosay + name)
        }
    }
    sayHi("Hello")

那是因為您仍然需要調用 function,即使您不想提供“名稱”參數。

試試: sayHi("whatever")()

你會看到預期的輸出!

任何未定義的

如果您省略最后一對括號,您將返回一個 function,如果您調用它,它將打印預期的 output,但您還沒有調用它。

因此,您可以例如將返回的 function 存儲在某個變量中,然后稍后調用它。

這將返回您的內部 function yolo

function sayHi(whattosay){
    return function yolo(name) {
        console.log(whattosay + name)
    }
}
sayHi("Hello")

您需要致電 yolo function 來查看您的 console.log output

function sayHi(whattosay){
    return function yolo(name) {
        console.log(whattosay + name)
    }
}
sayHi("Hello")()

您甚至可以將返回 function 存儲在變量中並調用它

function sayHi(whattosay){
    return function yolo(name) {
        console.log(whattosay + name)
    }
}
const yolo = sayHi("Hello")

yolo()

暫無
暫無

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

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