【问题标题】:difference between "click(e=>{" and "click(function(e){" [duplicate]“click(e => {”和“click(function(e){”之间的区别[重复]
【发布时间】:2018-10-24 10:59:38
【问题描述】:

之间有什么区别(如果有的话):

$('.title').click(e => {
    do_something();
});

还有这个:

$('.title').click(function(e) {
    do_something();
});

【问题讨论】:

标签: javascript jquery ecmascript-6 arrow-functions


【解决方案1】:

这是一样的,但是这个箭头函数是从 es6 开始的新语法。
请参阅 MDN 以获取有关箭头功能的更多信息:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

箭头函数(也称为“胖箭头函数”)无疑是 ES6 中比较流行的特性之一。他们引入了一种编写简洁函数的新方法。

这是一个用 ES5 语法编写的函数:

function timesTwo(params) {
   return params * 2
}

现在,这里是用箭头函数表示的相同函数:

var timesTwo = params => params * 2

它更短!由于隐式返回,我们可以省略花括号和 return 语句(但前提是没有块 — 更多内容见下文)。

与常规 ES5 函数相比,了解箭头函数的行为方式很重要。

无参数 如果没有参数,可以在=>前放一个空括号。

() => 42

事实上,你甚至不需要括号!

_ => 42

单参数 对于这些函数,括号是可选的:

 x => 42  || (x) => 42

多个参数 这些函数需要括号:

(x, y) => 42

语句(相对于表达式) 在最基本的形式中,函数表达式产生一个值,而函数语句执行一个动作。

对于箭头函数,重要的是要记住语句需要有花括号。一旦出现大括​​号,你也总是需要写 return。

下面是一个与 if 语句一起使用的箭头函数示例:

var feedTheCat = (cat) => {
  if (cat === 'hungry') {
    return 'Feed the cat';
  } else {
    return 'Do not feed the cat';
  }
}

“块体” 如果你的函数在一个块中,你还必须使用显式的 return 语句:

var addValues = (x, y) => {
  return x + y
}

对象字面量 如果要返回对象字面量,则需要将其括在括号中。这会强制解释器评估括号内的内容,并返回对象字面量。

x =>({ y: x })

jquery 的另一件事。你最好使用.on 而不是.click

更多信息请参考:
Difference between .on('click') vs .click()

【讨论】:

  • 引入这种新语法的原因是什么。有没有更好的表现或...什么?
  • thanks_a_lot => Thanks_a_lot * 3
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 2016-01-21
  • 2019-02-18
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多