从一开始,箭头就是Javascript的一部分。在第一个Javascript中,建议内联脚本代码被包装在HTML注释中,这样可以防止浏览器不支持Javascript的错误,并将代码显示为明文:





<!——
document.bgcolor =棕色; / /红色




<!——
document.bgcolor =棕色; / /红色





旧浏览器将看到不支持的两个标记和注释。只有支持Javascript的新浏览器才会把它解析成Javascript代码。

为了支持这个奇怪的特性,Javascript浏览器引擎在标签的第一行,但任何一部分的Javascript代码都是可用的,它甚至可以在节点中使用。

碰巧的是,这种风格的注释是标准的6首。但这不是我们要谈的箭。

>还说,与HTML中的HTML不同,注释是注释的一部分,在使用Javascript之前,在行中是注释。

只有当出现在一行的开头时,它才表示箭头是注释,因为在其他情况下,>是操作符(to)。




函数倒计时(n){
当(n = 0)n达到零
警报(N);
Blastoff();
}

函数倒计时(n){
当(n = 0)n达到零
警报(N);
Blastoff();
}



上面的代码是能够运行。流传到N是0,这不是6的新功能,但它是非常误导我们熟悉的特征。你能理解上面的代码的运行您可以在堆栈溢出处找到答案。

当然,有一个箭头,即小于或等于操作符< =,也许你也能找到箭头的用法,但我们仍然看到一个停止,我们从来没有见过箭头:

<!单行注释
运算符
<小于或等于运算符
= >


那么,是什么这是本文将要讨论的主题。

首先,让我们来谈谈函数。

无处不在的函数表达式

Javascript的一个有趣特性是,您随时都需要一个函数,您可以轻松地创建它们。

例如,为按钮绑定一个单击事件:




$(#confetti-btn).Click (

$(#纸屑按钮(Click)。



jQuery的点击()方法需要一个函数作为参数,并且我们可以很容易地在地上创建一个函数。




$(#纸屑BTN)。Click(函数(事件){
playtrumpet();
fireconfetticannon();
});


$(#纸屑BTN)。Click(函数(事件){
playtrumpet();
fireconfetticannon();
});




现在对我们来说,它是写这样的代码的最自然的事。但在Javascript中开始流行,这种风格的代码看起来很奇怪,因为在其他语言中没有这样的功能。1958、LISP有功能性表达,也被称为lambda函数,在C++中,Python,C #没有特色,和java,已经存在很多年了。

现在,这四种语言都有lambda表达式,而新兴语言一般都是用lambda表达式构建的。

与其他几种语言相比,Javascript的语法有点冗长:




六语言中的一个非常简单的函数。
函数(返回){ 0;
{ }(int){ return } / / C++ > 0;
(λ(a)(a 0));Lisp
λ:一# > 0条
= >一> 0 / / C #
一个> > 0 / / java

六语言中的一个非常简单的函数。
函数(返回){ 0;
{ }(int){ return } / / C++ > 0;
(λ(a)(a 0));Lisp
λ:一# > 0条
= >一> 0 / / C #
一个> > 0 / / java



箭头功能

6引入了一个新的语法写功能:




/ / ES5
VaR选择= alljobs.filter(功能(工作){)
返回job.isselected();
});

/ / ES6
VaR选择= alljobs.filter(工作=工作。选择)();


/ / ES5
VaR选择= alljobs.filter(功能(工作){)
返回job.isselected();
});

/ / ES6
VaR选择= alljobs.filter(工作=工作。选择)();




当函数只需要一个参数时,箭头函数语法可以简化为表达式=表达式,直接省略函数和返回关键字,即使在括号的结尾,分号也被省略。

要编写具有多个参数的函数(或没有参数、或休息参数和默认值,或分解参数),需要用括号括起参数。




/ / ES5
无功总= values.reduce(功能(A,B){
返回A+;
},0);

/ / ES6
VaR(总= values.reduce(A,B)= A + B,0);

/ / ES5
无功总= values.reduce(功能(A,B){
返回A+;
},0);

/ / ES6
VaR(总= values.reduce(A,B)= A + B,0);




箭头的功能,还可以用一些工具库完美的使用,如Underscore.js不变。事实上,在一成不变的文件,所有的例子都是用6,其中许多已被用于在箭头的功能。

除了使用表达式外,箭头函数还可以包含语句块和前面提到的示例。




/ / ES5
$(#纸屑BTN)。Click(函数(事件){
playtrumpet();
fireconfetticannon();
});

/ / ES5
$(#纸屑BTN)。Click(函数(事件){
playtrumpet();
fireconfetticannon();
});



下面是使用箭头函数的方法:




/ / ES6
$(#纸屑BTN)。Click(事件=> {
playtrumpet();
fireconfetticannon();
});

/ / ES6
$(#纸屑BTN)。Click(事件=> {
playtrumpet();
fireconfetticannon();
});



需要注意的是,使用语句块的箭头函数不会自动返回一个值,必须显式使用返回值返回值。

另一个建议是,当使用箭头函数返回一个对象时,总是将括号中返回的对象括起来。




为每个小狗创建一个新的空对象
无功chewtoys = puppies.map(小狗= > { }); / /错误!
无功chewtoys = puppies.map(小狗= >({ }) / /好);


为每个小狗创建一个新的空对象
无功chewtoys = puppies.map(小狗= > { }); / /错误!
无功chewtoys = puppies.map(小狗= >({ }) / /好);




因为空对象和空块{ } { }将始终把6看起来一模一样,背面为起始{ = >块,而不是一开始的一个对象,然后小狗= > { }被分析为一体的功能没有箭头的函数,但返回值未定义。