我知道>=运算符意味着大于或等于,但我在一些源代码中看到过=>。这个运算符是什么意思?

代码如下:

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

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

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

当前回答

正如所有其他答案已经说过的,它是ES2015箭头函数语法的一部分。更具体地说,它不是一个操作符,而是一个标点符号,将参数与正文分隔开来。例如(params) => {/* body */}。

其他回答

再举一个例子,说明lambda不使用map也能做什么:

a = 10
b = 2

var mixed = (a,b) => a * b; 
// OR
var mixed = (a,b) => { (any logic); return a * b };

console.log(mixed(a,b)) 
// 20

这被称为箭头函数,是ECMAScript 2015规范的一部分…

Var foo = ['a', 'ab', 'abc']; Var bar = foo。Map (f => f.length); console.log(栏);/ / 1、2、3

比前面的语法更短:

// < es6: Var foo = ['a', 'ab', 'abc']; Var bar = foo.map(函数(f) { 返回f.length; }); console.log(栏);/ / 1、2、3

DEMO

另一件很棒的事情是词汇上的。通常,你会这样做:

函数Foo() { This.name = name; 这一点。计数= 0; this.startCounting (); } Foo.prototype.startCounting = function() { Var self = this; setInterval(函数(){ //这是窗口,而不是Foo{},因为你可能期望 console.log(这个);//[对象窗口] //这就是为什么我们在setInterval()之前重新分配给self console.log (self.count); self.count + +; }, 1000) } 新Foo ();

但可以用箭头这样重写:

函数Foo() { This.name = name; 这一点。计数= 0; this.startCounting (); } Foo.prototype.startCounting = function() { setInterval(() => { console.log(这个);// [object对象] console.log (this.count);// 1, 2, 3 this.count + +; }, 1000) } 新Foo ();

DEMO

中数 更多关于语法

这里有一个关于何时使用箭头函数的很好的答案。

使用Arrowfunction添加简单的CRUD示例

 //Arrow Function
 var customers   = [
   {
     name: 'Dave',
     contact:'9192631770'
   },
   {
     name: 'Sarah',
     contact:'9192631770'
   },
   {
     name: 'Akhil',
     contact:'9928462656' 
   }],

// No Param READ
 getFirstCustomer = () => { 
   console.log(this);
   return customers[0];
 };
  console.log("First Customer "+JSON.stringify(getFirstCustomer())); // 'Dave' 

   //1 Param SEARCH
  getNthCustomer = index=>{
    if( index>customers.length)
    {
     return  "No such thing";
   }
   else{
       return customers[index];
     } 
  };
  console.log("Nth Customer is " +JSON.stringify(getNthCustomer(1))); 

   //2params ADD
  addCustomer = (name, contact)=> customers.push({
     'name': name,
     'contact':contact
    });
  addCustomer('Hitesh','8888813275');
  console.log("Added Customer "+JSON.stringify(customers)); 

  //2 param UPDATE
  updateCustomerName = (index, newName)=>{customers[index].name= newName};
  updateCustomerName(customers.length-1,"HiteshSahu");
  console.log("Updated Customer "+JSON.stringify(customers));

  //1 param DELETE
  removeCustomer = (customerToRemove) => customers.pop(customerToRemove);
  removeCustomer(getFirstCustomer());
  console.log("Removed Customer "+JSON.stringify(customers)); 

我读过,这是ES6中箭头函数的符号

var a2 = a.map(function(s){ return s.length });

使用箭头函数可以写成

var a3 = a.map( s => s.length );

MDN文档

它是什么

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

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

您可以在Mozilla文档中阅读更多关于箭头函数的内容。

来自Mozilla文档:

与函数表达式相比,箭头函数表达式(也称为胖箭头函数)具有更短的语法,并且在词法上绑定this值(不绑定自己的this、参数、super或new.target)。箭头函数总是匿名的。这些函数表达式最适合用于非方法函数,它们不能用作构造函数。

在箭头函数中如何工作的说明

箭头函数最方便的特性之一就隐藏在上面的文本中:

一个箭头函数…从词法上绑定this值(不绑定自己的this…)

简单来说,这意味着箭头函数从它的上下文中保留this值,而没有自己的this值。传统函数可以绑定自己的this值,这取决于它是如何定义和调用的。这可能需要大量的操作,如self = This;等,以便从一个函数访问或操作另一个函数中的This。有关此主题的更多信息,请参阅Mozilla文档中的解释和示例。

示例代码

示例(同样来自文档):

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+) Firefox (v. 22+) Edge (v. 12+) 歌剧(32+) Android浏览器(v47 +) Opera Mobile (33+) Chrome for Android (v47 +) Firefox for Android (v. 44+) Safari (v. 10+) iOS Safari(版本10.2+) 三星互联网(5+) 百度浏览器(v7.12 +)

不支持:

IE(通过第11节) Opera Mini(通过v. 8.0) 黑莓浏览器(通过v. 10) IE Mobile(通过v. 11) UC浏览器for Android(通过v. 11.4) QQ(通过1.2 .)

你可以在CanIUse.com上找到更多(以及更多最新的)信息。