“ click(e => {”和“ click(function(e){”

时间:2018-10-24 10:59:39

标签: javascript jquery ecmascript-6 arrow-functions

以下两者之间有什么区别(如果有的话)

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

和这个:

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

1 个答案:

答案 0 :(得分:4)

这是相同的,但是此箭头功能是一种新语法,表示来自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的{​​{1}}

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