为什么在声明这个javascript函数时参数中会有花括号?(Node,model.js中的MongoDB)
Why are there curly brackets in the parameters when declaring this javascript function? (Node, MongoDB in model.js)
我正在查看其他人正在运行的Javascript代码。为什么在声明函数时参数中会有花括号?例如:
function createUser({username, password, name, weight}, f) {};
这只是强制执行和重命名传入对象中的键吗?这是在model.js中,所以它可能与验证有关?
后续问题:当我试图在我的机器上编译它时,我如何才能不出错?在这些奇怪的括号的第一个处,我得到了"SyntaxError:Unexpected token{"。
这是一个ES6析构函数赋值。
此语法声明了一个具有两个参数的函数。
作为第一个参数传递的对象的username
、password
、name
和weight
属性的值将通过函数体中的变量username
、password
、name
和weight
可用。
第二个参数将通过变量f
提供。
例如:
(function ({a,b}, c) {
return [a,b,c];
})({a:1, b:2, d:"ignored"}, 3); // [1,2,3]
也许有人可以更好地回答这个问题,但{}的一个原因可能是JSON或对象文字,但即使如此,我认为它应该更像{abc:def,efg:hij,jkl:mln}(对于对象文字-其中def,hij e.t.c.是字符串的变量名或字符串文字),或者对于JSON来说应该是这样{"abc":"def","efg":"hij","jkl":"mln&"}
创建用户的mongo文档https://docs.mongodb.org/v3.0/reference/method/db.createUser/举了一个例子。注意属性:用逗号分隔的值对
use admin
db.createUser(
{
user: "appAdmin",
pwd: "password",
roles:
[
{ role: "readWrite", db: "config" },
"clusterAdmin"
]
}
)
或者在这里,来自相同的链接,但带有JSON的示例和对象文字的示例。注意对象文字的值对和JSON的值对。
use products
db.createUser( { "user" : "accountAdmin01",
"pwd": "cleartext password",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
编辑
Dmytro Shevchenko在我与他的讨论中提出了重要的观点,即在函数定义的形式参数中,即function abc(....) {}
在。。。您永远不会有JSON或对象文字或任何{}。您可以传入对象文字、JSON或带正文的函数,因此传入的内容可能有{},因此它们可以作为参数(实际参数)传入函数。但它们永远不会成为正式的参数。所以你提到的代码在多个层面上都是错误的。。{abc,def}作为对象文字是无效的,作为JSON也是无效的,因为即使它被调整为有效的对象文字或有效的JSON,它也不应该存在!
这是和德米特罗的聊天https://chat.stackoverflow.com/rooms/95661/discussion-between-barlop-and-dmytro-shevchenko
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- Ember Data DS.Model's set函数不起作用
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- 如何在构建node-webkit应用程序后获取外部资源
- node.js请求数据事件未在CORS ajax调用中触发
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Mongoose's model.update在Node.js中不起作用
- 为什么在声明这个javascript函数时参数中会有花括号?(Node,model.js中的MongoDB)
- WebStorm Node.Js Sequelize Model类型提示
- 在node js中将数据从model传递到router