本文对应《JavaScript忍者秘籍》第3章内容。
1.函数式编程
函数是第一类对象。
函数和对象
共性:
- 通过字面量创建。
- 赋值给变量、数组项,或其他对象属性。
- 作为参数传递给函数。
- 作为函数的返回值。
- 具有动态创建和分配的属性。
个性:
- 函数是可调用的。
回调函数
函数会被其他函数在稍后的某个时间点“再回来调用”。
升序排序:
var values=[1,1,4,5,1,4];
values.sort(function(v1,v2){
return v1>v2;
});
2.函数作为对象
可以给函数添加属性。
3.函数定义
4类定义函数的方式:
- 函数定义和函数表达式
function f(){
return 1;
}
var g=function(){
return 2;
}
- 箭头函数
x=>x*x
- 函数构造函数(不常用)
new Function('a','b','return a+b');
- 生成器函数
function* gen(){
yield 1;
}
函数定义和函数表达式
立即函数
(function(x){
return x+1;
})(3);
也可以加运算符+ - ! ~
来指明它是表达式而不是函数定义语句。
+function(x){return x+1}(3);
箭头函数
var values=[1,1,4,5,1,4];
values.sort((v1,v2)=>v1>v2);
参数多于一个,需要加括号。
函数体多于一句,需要写成代码块,并显示包含return
。
4.实参与形参
实参的数量大于形参的数量,多余的实参并没有用。
形参的数量大于实参的数量,没有对应实参的形参会设为undefined
。
剩余参数
剩余参数是一个Array
的实例。
function sum(...rest){
var sum=0;
rest.forEach(v=>sum+=v);
return sum;
}
默认参数
function FofC(c=37){
return c*9/5+32;
}