Javascript中的符号() =>代表什么意思?

6
您可以在此代码的第一行看到“(...)=>”符号:
const server = http.createServer((req,res) => {
       res.statusCode = 200;
       res.setHeader('content-type', 'text/plain');
       res.end('Hello World');
    });

7
ES6箭头函数 - Pranav C Balan
为什么这个被踩了?我认为这是一个非常好的问题。 - Jon Trauntvein
3
请给这位新用户提供一些帮助,至少包括链接到重复的问题。静默地进行负投票既无益于他,也无益于社区! - Jon Trauntvein
1
@JonTrauntvein 这个问题已经被标记为重复了... 你没有看到问题中指向重复内容的巨大横幅吗? - Kevin B
3
当我第一次看到这个问题时,它还没有被关闭,我仍然相信你至少需要提及那些重复的内容,否则你将无法取得任何进展! - Jon Trauntvein
显示剩余3条评论
2个回答

11

这是一个ES6中新定义的箭头函数

箭头函数表达式的语法比函数表达式更简短,不绑定自己的thisargumentssupernew.target。箭头函数始终是匿名函数。这些函数表达式最适合用于非方法函数,并且不能用作构造函数。


它们通常只是写匿名函数function() {}的一种更短的方式,你可能已经很熟悉了。

这些代码片段做相同的事情:

  1. setTimeout(function () {
      console.log("Hey");
    }, 1000);
    
  2. setTimeout(() => {
      console.log("Hey");
    }, 1000);
    
这意味着在您的示例中,http.createServer 接受一个参数,即一个函数,该函数本身接受两个参数。
箭头函数不等同于匿名函数 function () {}function () {} 绑定了它自己的 this

1
或者,就不要这样做,因为这已经在重复问题中 很好地 讨论过了。 - Kevin B
我相信你知道其中的区别,但是过度简化很容易导致误解。这就像说DOM getters返回一个数组,然后在下一个问题中,提问者问“为什么我的array.pop()不起作用”。 - Teemu
1
@Teemu 但我并没有这么说,我只是没有完全说明它们之间的区别。我觉得我没有做错任何事情。 - theonlygusti
@Teemu,我理解你的意思,但我认为这不是一个非常极端的情况。我说“本质上,这些代码片段做的事情是一样的。”这是真的。只是不能适用于所有情况。 - theonlygusti
1
它们做的事情相同,但并不等价。你没有说它们是等价的,所以你没有错。 - Kevin B

9

这是一个ES6箭头函数:

(req, res) => {}

等同于:

function(req, res){}

为什么这个被踩了呢?它实际上是正确的,不像一些人认为的在JS中是lambda表达式,可以和其他语言进行比较。 - Mikael Puusaari
5
箭头函数是JS中的一种简化写法,但它们不仅仅是匿名函数的速记。你甚至可以说,在这个答案中的两个代码片段并不等同。 - Kevin B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接