![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1
var
serial_maker
=
function
() {
2 var prefix = '' ;
3 var seq = 0 ;
4
5 return {
6 set_prefix: function (p) {
7 prefix = String(p);
8 },
9
10 set_seq: function (s) {
11 seq = s;
12 },
13 gensym: function () {
14 var result = prefix + seq;
15 seq += 1 ;
16 return result;
17 }
18 };
19 } ();
20
21 var seqer = serial_maker;
22
23 seqer.set_prefix ( ' Q ' );
24 seqer.set_seq ( 1000 );
25 var unique = seqer.gensym();
26 alert(unique);
2 var prefix = '' ;
3 var seq = 0 ;
4
5 return {
6 set_prefix: function (p) {
7 prefix = String(p);
8 },
9
10 set_seq: function (s) {
11 seq = s;
12 },
13 gensym: function () {
14 var result = prefix + seq;
15 seq += 1 ;
16 return result;
17 }
18 };
19 } ();
20
21 var seqer = serial_maker;
22
23 seqer.set_prefix ( ' Q ' );
24 seqer.set_seq ( 1000 );
25 var unique = seqer.gensym();
26 alert(unique);
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1
var
fibonacci
=
function
( ) {
2 var memo = [ 0 , 1 ];
3 var fib = function (n) {
4 var result = memo[n];
5 if ( typeof result !== ' number ' ) {
6 result = fib(n - 1 ) + fib(n - 2 );
7 memo[n] = result;
8 }
9 return result;
10 };
11 return fib;
12 }( );
13
14
15 var fibonacci = memoizer([ 0 , 1 ], function (shell, n) {
16 return shell(n - 1 ) + shell(n - 2 );
17 });
18
19 var factorial = memoizer([ 1 , 1 ], function (shell, n) {
20 return n * shell(n - 1 );
21 });
2 var memo = [ 0 , 1 ];
3 var fib = function (n) {
4 var result = memo[n];
5 if ( typeof result !== ' number ' ) {
6 result = fib(n - 1 ) + fib(n - 2 );
7 memo[n] = result;
8 }
9 return result;
10 };
11 return fib;
12 }( );
13
14
15 var fibonacci = memoizer([ 0 , 1 ], function (shell, n) {
16 return shell(n - 1 ) + shell(n - 2 );
17 });
18
19 var factorial = memoizer([ 1 , 1 ], function (shell, n) {
20 return n * shell(n - 1 );
21 });