在SO上发布另一个问题时,我注意到旁边的广告是这样写的:
$('#apply-now').on('click', () => {new GreatCareer()});
/* Invoke and submit your resume */
现在,() => {new GreatCareer()}
的那一点对我来说是新的。我在那个地方见过匿名或命名函数。这个语法到底是什么意思?
这是新的ECMAScript 6箭头函数语法:
var a = [
"Hydrogen",
"Helium",
"Lithium",
"Beryllium"
];
// initial sytax
var a2 = a.map(function(s){ return s.length });
// arrow function sytax
var a3 = a.map( s => s.length );
//没有参数的函数需要括号:()=> {语句}
,因此()
表示函数的空参数,并且根据新的语法,省略了function
关键字。
SO $('#apply-now').on('click', () => {new GreatCareer()});
意味着
$('#apply-now').on('click', function(){ return new GreatCareer(); });
这是lambda表示法,只是定义函数的另一种方式。
更多细节在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions