【问题标题】:What does it mean equal and greater-than sign (=>) in Javascript? [duplicate]Javascript中的等于和大于号(=>)是什么意思? [复制]
【发布时间】:2015-10-27 18:39:44
【问题描述】:

在 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

什么是“=>”?

【问题讨论】:

标签: javascript syntax


【解决方案1】:

我实际上正准备否决这个问题,但如果您还不知道它的名称,那么在谷歌上搜索答案会非常困难。正如您在 cmets 中的链接中看到的那样,这是一个粗箭头函数(有时仅称为箭头函数)。

箭头函数有一些confusing 方面,所以我将重点介绍:

普通函数根据上下文设置this指针:使用new调用的函数将其设置为新创建的对象,作为方法调用的函数将其绑定到调用方法的对象,其否则绑定到undefined 或全局对象(取决于“严格模式”编译指示),当然可以使用Function.prototype.bind 等设置。

但是箭头函数对运行时创建的this 指针没有绑定(也不能通过Function.prototype.bind 指定),这意味着它像任何其他var 一样通过范围链解析进行词法查找。 MDN 文章在这一点上充其量只是稍微有点混乱(参见上面的链接)。

此外,箭头函数具有隐式返回,返回值将自动成为函数体中最后一个计算的表达式。

箭头函数没有arguments 伪数组。你可以改用 ES 6 的 rest 参数。

对于 arity 1 的函数,参数周围的括号可以省略。

【讨论】:

  • “虽然可能是错误的来源,但它可以在任何支持本机箭头功能的环境中获取全局对象” 我不认为这是真的.正如您所说,由于 this 是词法解析的,因此只有在当前环境中的 this 已经解析为全局对象时,您才会获得全局对象。 IE。 function foo() { 'use strict'; let _global = (() => { return this })(); }; foo(); 会将 _global 设置为 undefined
  • @FelixKling 我不知道顶级函数中的this 在非严格模式下不引用全局对象(针对该环境)的环境。严格模式是问题所在,而 AFAIK 是 System.global 提案的原因。 github.com/tc39/proposal-global
  • 等等,你的意思是let _global = (() => { return this })();是在全局范围内执行的吗? “问题出在严格模式” 那么,在全局范围内,this 将始终引用全局对象,即使在严格模式下也是如此。这与箭头函数无关。
  • 正确。在这样的函数中定义它显然会使其成为undefined,因为this 在作用域链中被设置为更高的未定义,但如果严格模式杂注是全局设置的(比如在另一个文件中),则该方法我概述应该仍然适用于 AFAIK。
  • 但同样,由于箭头函数内的this 将解析为this 在函数定义(并在本例中执行)的环境中具有的任何值,你可以只做let _global = this; .也许不使用this 会更清楚:let x = 42; let y = (() => { return x })();let x = 42; let y = x; 相同。
【解决方案2】:

那是es6 arrow function。如果您切换到 WebStorms 设置:

您可以将您的 javascript 版本切换到 ecmascript 6,如图所示,以使 WebStorm 正确识别它们。


【讨论】:

    猜你喜欢
    • 2015-12-28
    • 2015-10-31
    • 2014-09-14
    • 2022-12-29
    • 2014-02-08
    • 2014-07-28
    • 2014-11-17
    相关资源
    最近更新 更多