我知道>=运算符意味着大于或等于,但我在一些源代码中见过=>.那个接线员是什么意思?

以下是代码:

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

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

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

推荐答案

What It Is

This is an arrow function.箭头函数是ECMAScript 6引入的简短语法,其使用方式与使用函数表达式的方式相似.换句话说,你可以经常用它们来代替像function (foo) {...}这样的表达式.但他们有一些重要的不同之处.例如,它们不绑定自己的值this(参见下面的讨论).

箭头函数是ECMAscript 6规范的一部分.它们还没有在所有浏览器中得到支持,但从2018年起,它们在in Node v. 4.0+种和大多数现代浏览器中得到了部分或完全支持.(我在下面列出了部分支持浏览器的列表).

You can read more in the Mozilla documentation on arrow functions

来自Mozilla文档:

function expressions相比,箭头函数表达式(也称为胖箭头函数)具有更短的语法,并且在词汇上绑定this值(不绑定其自身的thisargumentssupernew.target).箭头函数始终是匿名的.这些函数表达式最适合非方法函数,不能用作构造函数.

A Note on How this Works in Arrow Functions

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

一个箭头函数...按词汇绑定this值(不绑定自己的this…)

更简单地说,这意味着arrow函数保留了上下文中的this值,而没有自己的this.传统函数may根据其定义和调用方式绑定自己的this值.这可能需要很多练习,比如self = this;等,才能从一个函数中访问或操纵this.有关此主题的更多信息,请参阅the explanation and examples in the Mozilla documentation.

Example Code

示例(也来自文档):

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]

Notes on Compatibility

您可以在Node中使用箭头函数,但对浏览器的支持参差不齐.

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

  • chromium (v.45+)
  • Firefox(22+版)
  • 边缘(v.12+)
  • 歌剧(32+号)
  • 安卓浏览器(47+节)
  • Opera Mobile(33+版)
  • Android版Chrome(47+版)
  • 适用于Android的Firefox(v44+)
  • 狩猎(10+版)
  • IOS Safari(10.2+版)
  • 三星互联网(v.5+)
  • 百度浏览器(7.12+版)

在以下情况下不受支持:

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

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

Javascript相关问答推荐

如何制作删除按钮以从列表中删除该项目所属的项目?

获取最接近的父项(即自定义元素)

用户单击仅在JavaScript中传递一次以及其他行为

使用下表中所示的值初始化一个二维数组

TypeScript索引签名模板限制

在我的html表单中的用户输入没有被传送到我的google表单中

无法从NextJS组件传递函数作为参数'

Angular 中的类型错误上不存在获取属性

我可以使用使用node.js创建的本地主机来存储我网站上提交的所有数据吗?没有SQL或任何数据库.只有HTML语言

我怎么在JS里连续加2个骰子的和呢?

如何将多维数组插入到另一个多维数组中?

try 使用javascript隐藏下拉 Select

在浏览器中触发插入事件时检索编码值的能力

如何将未排序的元素追加到数组的末尾?

未加载css colored颜色 ,无法将div设置为可见和不可见

Next.js中的服务器端组件列表筛选

在验证和提交表单后使用useNavigate()进行react 重定向,使用带有加载器和操作的路由

需要刷新以查看Mern堆栈应用程序中的更改

将以前缓存的 Select 器与querySelector()一起使用

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?