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. 

前端-语言
原文地址:https://www.cnblogs.com/beesky520/p/4599424.html