201506250923_《Javascript权威指南(第六版)——检查是否为函数、不完全函数、记忆的函数 》(P193-200)
一. 检查是否为函数。
function isFunction(x) {
return Object.prototype.toString.call(x) === "[object Function]";
};
function square(n) {
return n*n;
};
alert(isFunction(square)); //true
一. 函数式编程
1. 使用函数处理数组
例如:
function fn() {//some code...}; elemnets.reduce(fn);
2. 高阶函数——操作函数的函数
例如:
function not(f) {
return function() {
var result = f.apply(this,arguments);
return !result
}
};
var even = function(x) {return x%2 === 0};
var odd = not(even);
alert([1,1,3,5,7,9].every(odd)); //true 判断是否为奇数
3. 不完全函数
4. 记忆
例如:
//带有记忆能力的函数
function memorize(f) {
var cache = {};
return function() {
var key = arguments.length + Array.prototype.join.call(arguments,",");
if(key in cache) return cache[key];
else return cache[key] = f.apply(this,arguments);
};
};
//最大公约数算法函数
function zdgys(a,b) {
var t; if(a < b){
t = b,b = a, a = t;
};
while(b != 0){
t = b,b = a%b, a = t;
};
return a;
};
var instance = memorize(zdgys);
alert(instance(27,54)); //27
5.