Mercurial > js4py
annotate core-javascript/core-javascript-work/closure-exercises.js @ 154:ee0bf994ab95 core-javascript.closure-exercises
Add remove_answers.py script (and clean up closure-exercises.py).
| author | jf3243 |
|---|---|
| date | Wed, 02 Nov 2011 17:27:39 +0000 |
| parents | e8007df28827 |
| children | b774913eb242 |
| rev | line source |
|---|---|
| 153 | 1 var something; |
| 2 | |
| 3 TEST('anon', function() | |
| 4 { | |
| 5 var answer; | |
| 6 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
7 // start |
| 153 | 8 answer = function(){ |
| 9 return 1; | |
| 10 }; | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
11 // stop |
| 153 | 12 |
| 13 assert( answer() === 1 ); | |
| 14 }); | |
| 15 | |
| 16 | |
| 17 TEST('anon', function() | |
| 18 { | |
| 19 var outer_function = function(){ | |
| 20 | |
| 21 var answer; | |
| 22 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
23 // start |
| 153 | 24 answer = function(){ |
| 25 return 1; | |
| 26 }; | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
27 // stop |
| 153 | 28 |
| 29 return answer; | |
| 30 }; | |
| 31 | |
| 32 var my_inner_function = outer_function(); | |
| 33 | |
| 34 assert( typeof my_inner_function === 'function' ); | |
| 35 assert( my_inner_function() === 1 ); | |
| 36 }); | |
| 37 | |
| 38 | |
| 39 TEST('anon', function() | |
| 40 { | |
| 41 var outer_function = function(){ | |
| 42 | |
| 43 var answer; | |
| 44 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
45 // start |
| 153 | 46 answer = function(){ |
| 47 return 1; | |
| 48 }; | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
49 // stop |
| 153 | 50 |
| 51 return answer; | |
| 52 }; | |
| 53 | |
| 54 assert( outer_function()() === 1 ); | |
| 55 }); | |
| 56 | |
| 57 | |
| 58 TEST('anon', function() | |
| 59 { | |
| 60 var outer_function = function(n){ | |
| 61 | |
| 62 var answer; | |
| 63 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
64 // start |
| 153 | 65 answer = function(){ |
| 66 return n; | |
| 67 }; | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
68 // stop |
| 153 | 69 |
| 70 return answer; | |
| 71 }; | |
| 72 | |
| 73 assert( outer_function(1)() === 1 ); | |
| 74 assert( outer_function(2)() === 2 ); | |
| 75 assert( outer_function(3)() === 3 ); | |
| 76 }); | |
| 77 | |
| 78 | |
| 79 TEST('anon', function() | |
| 80 { | |
| 81 var outer_function = function(n){ | |
| 82 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
83 // start |
| 153 | 84 return function(){ |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
85 return n; |
| 153 | 86 }; |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
87 // stop |
| 153 | 88 }; |
| 89 | |
| 90 assert( outer_function(1)() === 1 ); | |
| 91 assert( outer_function(2)() === 2 ); | |
| 92 assert( outer_function(3)() === 3 ); | |
| 93 }); | |
| 94 | |
| 95 | |
| 96 TEST('anon', function() | |
| 97 { | |
| 98 var value = 1; | |
| 99 | |
| 100 var get_value = function(){ | |
| 101 return value; | |
| 102 }; | |
| 103 | |
| 104 something = 1; | |
| 105 assert( get_value() === something ); | |
| 106 }); | |
| 107 | |
| 108 | |
| 109 TEST('anon', function() | |
| 110 { | |
| 111 var value = 1; | |
| 112 | |
| 113 var set_value = function(n){ | |
| 114 value = n; | |
| 115 }; | |
| 116 | |
| 117 set_value(2); | |
| 118 something = 2; | |
| 119 assert( value === something ); | |
| 120 }); | |
| 121 | |
| 122 | |
| 123 TEST('anon', function() | |
| 124 { | |
| 125 var value = 1; | |
| 126 | |
| 127 var get_value = function(){ | |
| 128 return value; | |
| 129 }; | |
| 130 | |
| 131 var set_value = function(n){ | |
| 132 value = n; | |
| 133 }; | |
| 134 | |
| 135 something = 1; | |
| 136 assert( get_value() === something ); | |
| 137 | |
| 138 set_value(2); | |
| 139 something = 2; | |
| 140 assert( get_value() === something ); | |
| 141 }); | |
| 142 | |
| 143 | |
| 144 TEST('anon', function() | |
| 145 { | |
| 146 var value = 1; | |
| 147 | |
| 148 var ddd = function(aaa, bbb){ | |
| 149 return { | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
150 // start |
| 153 | 151 aaa: aaa, |
| 152 bbb: bbb | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
153 // stop |
| 153 | 154 }; |
| 155 }; | |
| 156 | |
| 157 var obj = ddd(1, 2); | |
| 158 | |
| 159 assert( obj.aaa === 1 ); | |
| 160 assert( obj.bbb === 2 ); | |
| 161 | |
| 162 }); | |
| 163 | |
| 164 | |
| 165 TEST('anon', function() | |
| 166 { | |
| 167 | |
| 168 var get_set_factory = function(){ | |
| 169 | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
170 // start |
| 153 | 171 var value; |
| 172 | |
| 173 var get = function(){ | |
| 174 return value; | |
| 175 }; | |
| 176 | |
| 177 var set = function(new_value){ | |
| 178 value = new_value; | |
| 179 }; | |
|
154
ee0bf994ab95
Add remove_answers.py script (and clean up closure-exercises.py).
jf3243
parents:
153
diff
changeset
|
180 // stop |
| 153 | 181 |
| 182 return { | |
| 183 get : get, | |
| 184 set : set | |
| 185 }; | |
| 186 }; | |
| 187 | |
| 188 var tmp; | |
| 189 tmp = get_set_factory(); | |
| 190 var get_a = tmp.get; | |
| 191 var set_a = tmp.set; | |
| 192 | |
| 193 tmp = get_set_factory(); | |
| 194 var get_b = tmp.get; | |
| 195 var set_b = tmp.set; | |
| 196 | |
| 197 | |
| 198 set_a('aaa'); | |
| 199 assert( get_a() == 'aaa' ); | |
| 200 | |
| 201 set_b('bbb'); | |
| 202 assert( get_b() == 'bbb' ); | |
| 203 | |
| 204 assert( get_a() == 'aaa' ); | |
| 205 }); |
