繁体   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