当前位置: 首页 > 面试题库 >

JavaScript中“ =>”(等于或大于的箭头)的含义是什么?

胡云瀚
2023-03-14
问题内容

我知道>=运算符的含义是大于或等于,但是我已经=>在一些源代码中看到了。该运算符是什么意思?

这是代码

promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
    if (!aDialogAccepted)
        return;

    saveAsType = fpParams.saveAsType;
    file = fpParams.file;

    continueSave();
}).then(null, Components.utils.reportError);

问题答案:

这是一个箭头功能。 箭头函数是ECMAscript
6引入的一种短语法,可以与使用函数表达式的方式类似地使用。换句话说,您经常可以使用它们代替诸如的表达式function (foo) {...}。但是它们有一些重要的区别。例如,它们不绑定自己的值this(请参见下面的讨论)。

箭头功能是ECMAscript 6规范的一部分。尚未在所有浏览器中都支持它们,但是在Node v.4.0
+和截至2018年使用的大多数现代浏览器中都部分或完全支持它们。(我在下面提供了部分支持的浏览器列表)。

从Mozilla文档中:

相比箭头函数表达式(也称为脂肪箭头功能)具有更短的语法函数表达式和词法结合this值(不结合其自身的thisargumentssuper,或new.target)。箭头功能始终是匿名的。这些函数表达式最适合非方法函数,因此不能用作构造函数。

关于this箭头功能如何工作的注释

上面的文本中隐藏了箭头功能最方便的功能之一:

箭头函数…按词法绑定this值(不绑定自己的值this…)

用更简单的术语表示,箭头功能保留了this上下文中的值,而没有自己的值this。传统函数 可以
绑定自己的this值,这取决于其定义和调用方式。这可能需要大量的体操运动,例如self = this;等,才能this从另一个功能内部访问或操作。

范例程式码

示例(同样来自文档):

var a = [
  "We're up all night 'til the sun",
  "We're up all night to get some",
  "We're up all night for good fun",
  "We're up all night to get lucky"
];

// These two assignments are equivalent:

// Old-school:
var a2 = a.map(function(s){ return s.length });

// ECMAscript 6 using arrow functions
var a3 = a.map( s => s.length );

// both a2 and a3 will be equal to [31, 30, 31, 31]

兼容性说明

您可以在Node中使用箭头功能,但浏览器支持不一。

浏览器对此功能的支持已经改善了很多,但是对于大多数基于浏览器的用法来说,它仍然不够广泛。自2017年12月12日起,当前版本的软件支持:

  • Chrome(v。45以上)
  • 火狐(v。22+)
  • 边缘(12岁以上)
  • 歌剧(v。32+)
  • Android浏览器(v。47+)
  • Opera Mobile(v。33+)
  • Chrome for Android(v。47+)
  • 适用于Android的Firefox(v。44及更高版本)
  • Safari(10岁以上)
  • iOS Safari(10.2以上版本)
  • 三星互联网(v。5+)
  • 百度浏览器(v。7.12+)

不支持:

  • IE(通过第11版)
  • Opera Mini(通过8.0版)
  • 黑莓浏览器(通过第10版)
  • IE Mobile(通过第11版)
  • 适用于Android的UC浏览器(通过11.4版)
  • QQ(通过1.2版)

您可以在CanIUse.com上找到更多(和更多最新信息)(无从属关系)。



 类似资料:
  • tl;医生:这是什么意思= 我刚刚解决了一个关于代码战的问题,在看了其他人对这个问题的共同反应后,我一直看到:

  • 下面是有问题的代码: 目前,在

  • 今天我注意到这个node.js代码: 给出输出 这很奇怪;如果某物不等于0或大于0,那么它为什么大于或等于0呢?发生什么事了?

  • 我目前正在Codecademy上学习JavaScript,我遇到了一些问题。我在一个叫做“建造石头,布,剪刀”的部分,有一个部分有一个条件,如果数学。random()大于0.33小于0.66,计算机将选择纸张。我的问题是,如何建立一个if条件,即某个东西大于X,但同时小于Y?

  • 问题内容: Swift 1.1包含〜>运算符的声明: 这在Swift中有什么用?它似乎已声明,但未定义任何可利用它的函数。其他开发人员已将其用于响应模式和封送队列之间的封包,但我想知道为什么在标准框架中对其进行了定义。我猜想它可以“保留”一个自定义运算符供开发人员使用,因为它具有最高的优先级。 问题答案: 由于Swift是开源的,我们可以看到将stdlib 包括在内的实际原因:作为Swift 1.

  • 问题内容: 我在PostgreSQL中有一个名为的关系,该关系包含2个字段:和,我想找到具有最高值的产品。据我所知,有两种方法可以做到: 或者 他们的执行速度有什么不同吗? 问题答案: 如果有任何行,第一个查询将失败(如Gordon所示)。 仅当所有行都具有时,第二个查询才会失败。因此,它在大多数情况下应该是可用的。(而且速度更快。) 如果在 Postgres 12或更早版本中 需要NULL安全查