• 匿名函数
• 回调函数
• 递归函数
• 构造函数
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(){} // 方法