Javascript困难-传递给内部函数的参数和括号的使用
有人能帮我澄清一下吗Javascript困难-传递给内部函数的参数和括号的使用,javascript,closures,parentheses,arrow-functions,Javascript,Closures,Parentheses,Arrow Functions,有人能帮我澄清一下吗 const connection = (closure) => { return mongoClient.connect(connectionString,(err,db) => { if(err) return console.log(err); closure(db); }); }; 显然: “connection”常量存储一个接受参数的函数(闭包) connect()返回null,但反过来填充回调中的参数
const connection = (closure) => {
return mongoClient.connect(connectionString,(err,db) => {
if(err) return console.log(err);
closure(db);
});
};
显然:
闭包
行仅在没有错误时发生,因为如果有错误,函数将立即返回
另外,closure
后面的括号只是调用它,因此closure
应该是一个函数。无论它返回什么,都将是它的结果
由于connect()返回null,是否可以用一些赋值语句(例如closure=db;)替换它,然后删除返回语句?这里需要什么样的返回语句
返回
仅用于退出该功能。它返回console.log的结果这一事实在这里并不重要。他们这样做只是为了把它放到一个语句中,这样他们就不需要花括号了
const connection = (closure) => {
return mongoClient.connect(connectionString,(err,db) => {
if(err) {
console.log(err);
return;
}
closure(db);
});
};
我想您指的是最里面的返回。外部数据库不能使用db
,因为它只存在于传递给connect
的回调中。如果.connect()
总是返回null
,那么是的,不需要外部返回
,但是,您不能只使用db
。代码的其余部分仍然是必需的
需要说明的是,您无法从传递到connect
的回调中获取任何值。它在外部函数和.connect()
返回之后很长时间被调用。“闭包使用括号将自身包裹在db周围”-什么?这是一个函数调用。不,记录错误时不会发生,因为函数在if
块中返回s。诚然,使用if(err)console.log(err);else闭包(db)代码>会更干净。那么在我提供的版本中是否有隐藏的其他版本?谢谢你的回复。我认为如果(只有)blockNo,就没有隐藏的else
,这是一个简写。在if
中有一个return
,这会导致无法到达缩写if后面的语句。