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