zoukankan      html  css  js  c++  java
  • 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. 

    前端-语言
  • 相关阅读:
    HDU多校第六场——HDU6638 Snowy Smile(线段树区间合并)
    java
    java
    java
    java
    java
    python
    appium
    python
    python
  • 原文地址:https://www.cnblogs.com/beesky520/p/4599424.html
Copyright © 2011-2022 走看看