初识function:
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
1、具名函数
var fun = function(){....}
此种方式变量会提升,函数体留原地。
function fun(){....}
此种方式变量函数体都会提升至最顶端,位于变量声明提前之前。
2、匿名函数
setTimeout(function(){....}, 1000)
缺点:
- 追踪栈中没函数名,调试困难
- 如果需要引用自身,只能用arguments.callee(ES5严格模式禁用)
- 降低了函数可读性、可理解性
3、立即执行函数
立即执行函数表达式用法:
//第一种
(function(){}());
//第二种
(function(){})();
4、头等函数 、高阶函数
函数接收函数作为参数,并返回一个函数,例如:
5、一元函数
只接收一个参数的函数
6、偏函数
创造一个新函数,让现有的一些参数值固定。比如bind实现偏函数:
function fun(a, b){
return a + b;
}
var test = fun.bind(null, 1);
test(2); // 3
6、柯里化函数
将一个多个参数的函数转换为几个一元函数序列化的过程。例如:
//多个参数函数
function add(a, b){
return a + b;
}
//柯里化
function add(a){
return function(b){
return a + b;
}
}
7、纯函数
返回值由其参数决定,没有任何副作用的函数。
8、箭头函数
- 没有this,arguments
- 不能与new一起使用,不能通过bind改变函数体this指向
- 写法更简洁
- 性能更优
- 箭头函数全是匿名函数
9、生成器
- function和函数名之间有一个*号
- 函数体内部使用了yield表达式
- yield和return一起使用的话,return后面的yield无效
- 没有return,最后结果将是undefined
10、Function构造函数