从一开始,
箭头就是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看起来一模一样,背面为起始{ = >块,而不是一开始的一个对象,然后小狗= > { }被分析为一体的功能没有箭头的函数,但返回值未定义。