gpt4 book ai didi

JavaScript 难度 - 传递给内部函数的参数和括号的使用

转载 作者:行者123 更新时间:2023-12-03 02:51:08 26 4
gpt4 key购买 nike

有人可以解密以下内容吗?

const connection = (closure) => {
return mongoClient.connect(connectionString,(err,db) => {
if(err) return console.log(err);
closure(db);
});
};

显然:

  1. “连接”常量存储一个带有参数(闭包)的函数
  2. mongoClient.connect() 返回 null,但又填充回调内的参数。
  3. 如果发生错误,err 会记录到控制台,但尽管如此(这是最令人困惑的部分),闭包会使用括号将自己包裹在 db 周围,这给出了?
  4. 由于 connect() 返回 null,是否可以将其替换为某些赋值语句(例如closure = db;),然后删除 return 语句?这里需要一个 return 声明吗?

谢谢你所做的一切铝

最佳答案

If an error occurs err logs to the console but nonetheless (and here is the most confusing part) closure makes use of parenthesis to wrap itself around db which gives?

不是“尽管如此”。 closure 行仅在没有错误时发生,因为如果有错误,函数会立即返回。

此外,closure 后面的括号只是调用它,因此 closure 应该是一个函数。无论它返回什么,都将是它的结果。

Since connect() returns null, could this have been replaced with some assignment statement (such as closure = db;) and then the return statement removed? What is the need of a return statement here?

return 只是退出函数。事实上,它返回 console.log 的结果在这里没有多大意义。他们这样做只是为了将其放入单个语句中,这样他们就不需要花括号了。

const connection = (closure) => {
return mongoClient.connect(connectionString,(err,db) => {
if(err) {
console.log(err);
return;
}
closure(db);
});
};

我假设您指的是最里面的返回。外部不能使用db,因为它仅存在于传递给connect 的回调中。如果 .connect() 始终返回 null,那么是的,不需要外部 return,但同样,您不能只使用数据库。其余的代码仍然是必要的。

需要明确的是,您无法从传递给 connect 的回调中获取任何值。它会在外部函数和 .connect() 返回很久之后调用。

关于JavaScript 难度 - 传递给内部函数的参数和括号的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47856563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com