在 Meteor Whatsapp 示例项目中,文件中使用了“=>”,但我的 WebStorm IDE 将其检测为错误。我找不到有关此语法的任何文档。
chats.forEach( chat => {
let message = Messages.findOne({ chatId: { $exists: false } });
chat.lastMessage = message;
let chatId = Chats.insert(chat);
Messages.update(message._id, { $set: { chatId: chatId } })
});
GitHub repository for bootstrap.js file is here
什么是“=>”?
我本来打算对这个问题投反对票,但事实证明,如果您还不知道它叫什么,谷歌搜索答案会出乎意料地困难。正如您在评论中的链接中看到的那样,这是一个粗箭头函数(有时简称为箭头函数)。
有一些confusing箭头函数的各个方面,所以我会打一些亮点:
普通函数有一个 this
指针集,这取决于上下文:使用 new
调用的函数将其设置为新创建的对象,作为方法调用的函数将其绑定(bind)到调用方法的对象,否则绑定(bind)到 undefined
或全局对象(取决于“严格模式”pragma),当然可以用 Function.prototype 设置。绑定(bind)
等
但是箭头函数对运行时创建的 this
指针没有绑定(bind)(也不能通过 Function.prototype.bind
指定),这意味着它从词法上看就像任何其他 var 一样通过作用域链解析。 MDN 文章在这一点上充其量只是有点困惑(见上面的链接)。
此外,箭头函数有一个隐式返回,返回值将自动成为函数体中最后计算的表达式。
箭头函数没有参数
伪数组。您可以改用 ES 6 剩余参数。
对于 arity 1 的函数,参数周围的括号可以省略。