[英]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.