记忆函数功能

使用JS记忆函数功能,能够有效提供代码的性能。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>记忆函数</title>
 6 </head>
 7 <body>
 8
 9 </body>
10 </html>
11 <script>
12     /**
13      * 记忆函数
14      * */
15     function memoize(fn){
16         return function(){
17             var propertyName;
18             fn.storage = fn.storage || {};
19
20             propertyName = Array.prototype.join.call(arguments,"|");
21
22             if(propertyName in fn.storage){
23                 return fn.storage[propertyName];
24             }else{
25                 fn.storage[propertyName] = fn.apply(this,arguments);
26                 return fn.storage[propertyName];
27             }
28         }
29     }
30
31     /**
32      * 计算阶乘的函数
33      * @param num
34      * @returns {number}
35      */
36     function getFactorial(num){
37         var result = 1,
38             index = 1;
39         for(;index <=num;index++){
40             result *= index;
41         }
42         return result;
43     }
44
45     var calcFn = memoize(getFactorial);
46     debugger;
47     calcFn(5);
48     calcFn(5);
49
50 </script>
时间: 2024-10-06 20:46:09

记忆函数功能的相关文章

记忆函数

很久没写随笔了呀,因为看到记忆函数,确实搞懵逼了啊,实在是太菜了. 书本上给出的例子: var fibonacci = function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); }; for (var i = 0; i <= 10; i += 1) { document.writeln('// ' + i + ': ' + fibonacci(i)); } // 0: 0 // 1: 1 // 2: 1 //

JavaScript的记忆函数真的可以提升性能吗?

1 记忆函数是什么呢? 让函数记住曾经计算过的参数对应的结果 2 那我们为什么使用记忆函数呢? 答案是 避免重复计算 3 在工作中如何使用和实现函数记忆 ? 形成闭包,在闭包中维护一个哈希数组(其实就是对象),让哈希数组帮你记住曾经你做过的计算 请看下面的例子:(计算质数) 先写两个函数 第一个数带记忆功能的: let isPrime = (function () {      let hash = {//哈希中存储类似这样的结构         //8: false,         //7:

oracle实现split函数功能

转载: http://blog.csdn.net/jojo52013145/article/details/6758279在实际的应用中,为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行具体化. 9i 通过引入的管道化表函数纠正了后一种情况.表函数是返回整个行的集(通常作为一个集合)的函数,可以直接从 SQL 语句中进行查询,就好像它是一个真正的数

模拟实现兼容低版本IE浏览器的原生bind()函数功能

模拟实现兼容低版本IE浏览器的原生bind()函数功能: 代码如下: if(!Function.prototype.bind){   Function.prototype.bind=function(oThis){     if (typeof this !== 'function'){       throw new TypeError('调用者不是当前函数对象');     }       var aArgs = Array.prototype.slice.call(arguments, 1

通过一个函数,操作一个结构体,实现对应函数功能

指针结构体一直是我的盲点,所以今天有必要整“清理门户”.此种通过一个函数操作一个结构体,实现对应函数功能,用法十分巧妙,使用得当可以使得代码可移植性和易懂性大大的增加,有人说过“代码注释的最高境界是程序的自述,而不是双斜杠然后后面跟着中英文的注释”.哈哈,说远了,下面开始进入今天的加油站,补充体力了. 1 // 头文件 2 #include <stdio.h> 3 4 // 函数声明 5 typedef struct _halDeviceFuncs_t 6 { 7 void (*pfnInit

用JAVA写一个函数,功能如下: 任意给定一组数, 找出任意数相加之后的结果为35(任意设定)的情况

用JAVA写一个函数.功能如下:任意给定一组数,例如{12,60,-8,99,15,35,17,18},找出任意数相加之后的结果为35(任意设定)的情况. 可以递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int s

【小计】PostgreSQL实现Oracle的trunc日期函数功能

create or replace function trunc(p_timestamp timestamp with time zone, p_formart varchar default 'DD')  returns timestamp without time zone as $$ declare  v_timestamp timestamp := null;  v_formart varchar(10) := upper(p_formart); begin  /*  * 函数功能:对日

leetcode5 Implement strstr() 实现strstr函数功能

Implement strstr() 实现strstr函数功能 [email protected] Question: Implement strstr(). Returns the index of the first occurrence of needle in haystack, or –1 if needle is not part of haystack. int strStr(string haystack, string needle) { for (int i = 0; ; i

javascript 数组扩展实现 php array_count_values() 函数功能

在PHP中,array_count_values() 这个函数可以统计数组元素出现的次数,这个函数会返回一个数组,键名是原数组的值,键值是这个值出现的次数. 但是JavaScript中没有这样的函数.不过大神无数,前些日子发现这样的一个扩展: /** javascript 数组扩展实现 php array_count_values() 函数功能 */ (function(window){ if ( window.ActiveXObject ) { window.Array.prototype.i