201506250923_《Javascript權威指南(第六版)——檢查是否為函數、不完全函數、記憶的函數 》(P193-200)

來源:互聯網
上載者:User

標籤:

一.  檢查是否為函數。

 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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.