????????? 匿名函数
????????? 回调函数
????????? 递归函数
????????? 构造函数
1、匿名函数
定义时候没有任何变量引用的函数
匿名函数自调:函数只执行一次
(function(a, b){
console.log(a + b);}
)(1, 2);
// 等价于
function foo (a, b){
console.log(a + b);
}
foo(1, 2);
jQuery:
(function(window, undefined){
var jQuery;
...
window.jQuery = window.$ = jQuery;
})(window);
优点:节约内存空间,掉用前和调用后内存中不创建任何函数对象
2、回调函数callback
如果一个函数作为对象交给其他函数使用
var arr = [33, 9, 11, 6];
arr.sort(function (a, b) {
return a - b;
});
console.log(arr);
// [6, 9, 11, 33]
异步回调
function getPrice(params, callback){
$.ajax({
url: '/getPrice',
type: 'POST',
data: params,
success: function(data){
callback(data);
}
})
}
3、递归函数
循环调用函数本身
var func = function(x) {
if(x === 2){
return x
} else{
return x * f(x - 1)
}
}
arguments.callee 严格模式下不支持使用 use strict
function func(x){
if(x === 1){
return 1
} else{
return x * arguments.callee(x -1)
}
}
4、构造函数
构造函数习惯上首字母大写
调用方式不一样,作用也不一样
构造函数用来新建实例对象
Person 既是函数名,也是这个对象的类名
function Person(){} // 构造函数
new Person()
function person(){} // 方法