annotate core-javascript/javascript-exercises/answers/function-exercises.js @ 189:2e652f4b492f javascript-exercises

Add function-exercises.js - 'arguments'.
author jf3243
date Thu, 17 Nov 2011 17:25:29 +0000
parents 41c63d83ef49
children 6e302e558f09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
187
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
1 var something = null;
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
2
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
3 TEST('return value', function()
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
4 {
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
5 var fn_1 = function(){
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
6 };
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
7
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
8 something = undefined;
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
9 assert( fn_1() === something );
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
10
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
11 var fn_2 = function(){
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
12 // start
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
13 return 42;
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
14 // end
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
15 };
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
16
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
17 something = undefined;
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
18 assert( fn_2() === 42 );
cc20307b32db Add function-exercises.js - 'return value'.
jf3243
parents:
diff changeset
19 });
188
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
20
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
21
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
22 TEST('parameters', function()
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
23 {
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
24 var something = null;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
25
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
26 var fn = function(a, b, c){
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
27 // start
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
28 return b;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
29 // stop
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
30 };
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
31
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
32 assert( fn(1, 2, 3) === 2 );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
33 assert( fn(4, 5, 6) === 5 );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
34
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
35 something = 8;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
36 assert( fn(7, 8) === something );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
37
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
38 something = 10;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
39 assert( fn(9, 10, 11, 12) === something );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
40
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
41 something = undefined;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
42 assert( fn(13) === something );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
43
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
44 something = undefined;
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
45 assert( fn() === something );
41c63d83ef49 Add function-exercises.js - 'parameters'.
jf3243
parents: 187
diff changeset
46 });
189
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
47
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
48
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
49 TEST('arguments', function()
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
50 {
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
51 var something = null;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
52
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
53 // 1
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
54 var fn_1 = function(){
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
55 return arguments.length;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
56 };
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
57
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
58 something = 0;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
59 assert( fn_1() === 0 );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
60 something = 1;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
61 assert( fn_1(0) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
62 something = 2;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
63 assert( fn_1(0, 0) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
64 something = 3;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
65 assert( fn_1(0, 0, 0) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
66
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
67
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
68 // 2
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
69 var fn_2 = function(i){
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
70 return arguments[i];
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
71 };
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
72
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
73 something = 0;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
74 assert( fn_2(0) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
75 something = 1;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
76 assert( fn_2(1, 1, 2) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
77 something = 11;
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
78 assert( fn_2(2, 10, 11) === something );
2e652f4b492f Add function-exercises.js - 'arguments'.
jf3243
parents: 188
diff changeset
79 });