標籤:
一. 檢查是否為函數。
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.
201506250923_《Javascript權威指南(第六版)——檢查是否為函數、不完全函數、記憶的函數 》(P193-200)