Skip to content

Commit d94f37d

Browse files
committed
various chapters: updating code style for consistency
1 parent 776dda2 commit d94f37d

File tree

7 files changed

+68
-68
lines changed

7 files changed

+68
-68
lines changed

ch1.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ outputMsg(); // The magic number is: 42
2929
// ***************
3030

3131
function calculateMagicNumber() {
32-
for (var i = 0; i < faves.length; i++) {
33-
magicNumber = magicNumber + faves[i];
32+
for (let fave of faves) {
33+
magicNumber = magicNumber + fave;
3434
}
3535
}
3636

3737
function pickFavoriteNumbers() {
38-
for (var i = 0; i < numbers.length; i++) {
39-
if (numbers[i] >= 10 && numbers[i] <= 20) {
40-
faves.push( numbers[i] );
38+
for (let num of numbers) {
39+
if (num >= 10 && num <= 20) {
40+
faves.push( num );
4141
}
4242
}
4343
}

ch2.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -534,8 +534,8 @@ Consider:
534534

535535
```js
536536
function forEach(list,fn) {
537-
for (let i = 0; i < list.length; i++) {
538-
fn( list[i] );
537+
for (let v of list) {
538+
fn( v );
539539
}
540540
}
541541

@@ -775,9 +775,8 @@ function findPropIn(propName,obj) {
775775
return obj[propName];
776776
}
777777
else {
778-
let props = Object.keys( obj );
779-
for (let i = 0; i < props.length; i++) {
780-
let ret = findPropIn( propName, obj[props[i]] );
778+
for (let prop of Object.keys( obj )) {
779+
let ret = findPropIn( propName, obj[prop] );
781780
if (ret !== undefined) {
782781
return ret;
783782
}

ch3.md

+13-13
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ function partial(fn,...presetArgs) {
284284

285285
// or the ES6 => arrow form
286286
var partial =
287-
(fn, ...presetArgs) =>
287+
(fn,...presetArgs) =>
288288
(...laterArgs) =>
289289
fn( ...presetArgs, ...laterArgs );
290290
```
@@ -547,7 +547,7 @@ function curry(fn,arity = fn.length) {
547547

548548
// or the ES6 => arrow form
549549
var curry =
550-
(fn, arity = fn.length, nextCurried) =>
550+
(fn,arity = fn.length,nextCurried) =>
551551
(nextCurried = prevArgs =>
552552
nextArg => {
553553
var args = [ ...prevArgs, nextArg ];
@@ -601,13 +601,13 @@ var adder = curry( add );
601601
// [4,5,6,7,8]
602602
```
603603
604-
How about another numbers example, this time adding a list of them together:
604+
Let's look at another numbers example, this time adding a list of them together:
605605
606606
```js
607-
function sum(...args) {
607+
function sum(...nums) {
608608
var total = 0;
609-
for (let i = 0; i < args.length; i++) {
610-
total += args[i];
609+
for (let num of nums) {
610+
total += num;
611611
}
612612
return total;
613613
}
@@ -773,8 +773,8 @@ function uncurry(fn) {
773773
return function uncurried(...args){
774774
var ret = fn;
775775

776-
for (let i = 0; i < args.length; i++) {
777-
ret = ret( args[i] );
776+
for (let arg of args) {
777+
ret = ret( arg );
778778
}
779779

780780
return ret;
@@ -787,8 +787,8 @@ var uncurry =
787787
(...args) => {
788788
var ret = fn;
789789

790-
for (let i = 0; i < args.length; i++) {
791-
ret = ret( args[i] );
790+
for (let arg of args) {
791+
ret = ret( arg );
792792
}
793793

794794
return ret;
@@ -798,10 +798,10 @@ var uncurry =
798798
**Warning:** Don't just assume that `uncurry(curry(f))` has the same behavior as `f`. In some libs the uncurrying would result in a function like the original, but not all of them; certainly our example here does not. The uncurried function acts (mostly) the same as the original function if you pass as many arguments to it as the original function expected. However, if you pass fewer arguments, you still get back a partially curried function waiting for more arguments; this quirk is illustrated in the next snippet.
799799
800800
```js
801-
function sum(...args) {
801+
function sum(...nums) {
802802
var sum = 0;
803-
for (let i = 0; i < args.length; i++) {
804-
sum += args[i];
803+
for (let num of nums) {
804+
sum += num;
805805
}
806806
return sum;
807807
}

ch4.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ function words(str) {
5050
function unique(list) {
5151
var uniqList = [];
5252

53-
for (let i = 0; i < list.length; i++) {
53+
for (let v of list) {
5454
// value not yet in the new list?
55-
if (uniqList.indexOf( list[i] ) === -1 ) {
56-
uniqList.push( list[i] );
55+
if (uniqList.indexOf( v ) === -1 ) {
56+
uniqList.push( v );
5757
}
5858
}
5959

@@ -236,16 +236,16 @@ var compose =
236236
Now let's look at an example of composing more than two functions. Recalling our `uniqueWords(..)` composition example, let's add a `skipShortWords(..)` to the mix:
237237

238238
```js
239-
function skipShortWords(list) {
240-
var filteredList = [];
239+
function skipShortWords(words) {
240+
var filteredWords = [];
241241

242-
for (let i = 0; i < list.length; i++) {
243-
if (list[i].length > 4) {
244-
filteredList.push( list[i] );
242+
for (let word of words) {
243+
if (word.length > 4) {
244+
filteredWords.push( word );
245245
}
246246
}
247247

248-
return filteredList;
248+
return filteredWords;
249249
}
250250
```
251251

ch5.md

+25-24
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,10 @@ function fetchUserData(userId) {
201201

202202
function fetchOrders(userId) {
203203
ajax( "http://some.api/orders/" + userId, function onOrders(orders){
204-
for (let i = 0; i < orders.length; i++) {
204+
for (let order of orders) {
205205
// keep a reference to latest order for each user
206-
users[userId].latestOrder = orders[i];
207-
userOrders[orders[i].orderId] = orders[i];
206+
users[userId].latestOrder = order;
207+
userOrders[orders[i].orderId] = order;
208208
}
209209
} );
210210
}
@@ -429,12 +429,12 @@ All the inputs (`x` and `y`) and outputs (`return ..`) are direct; there are no
429429
However, not all pure functions are idempotent in the mathematical sense, because they don't have to return a value that would be suitable for feeding back in as their own input. Consider:
430430

431431
```js
432-
function calculateAverage(list) {
432+
function calculateAverage(nums) {
433433
var sum = 0;
434-
for (let i = 0; i < list.length; i++) {
435-
sum += list[i];
434+
for (let num of nums) {
435+
sum += num;
436436
}
437-
return sum / list.length;
437+
return sum / nums.length;
438438
}
439439

440440
calculateAverage( [1,2,4,7,11,16,22] ); // 9
@@ -634,31 +634,31 @@ Referential transparency is the assertion that a function call could be replaced
634634
From the perspective of referential transparency, both of these programs have identical behavior as they are built with pure functions:
635635

636636
```js
637-
function calculateAverage(list) {
637+
function calculateAverage(nums) {
638638
var sum = 0;
639-
for (let i = 0; i < list.length; i++) {
640-
sum += list[i];
639+
for (let num of nums) {
640+
sum += num;
641641
}
642-
return sum / list.length;
642+
return sum / nums.length;
643643
}
644644

645-
var nums = [1,2,4,7,11,16,22];
645+
var numbers = [1,2,4,7,11,16,22];
646646

647-
var avg = calculateAverage( nums );
647+
var avg = calculateAverage( numbers );
648648

649649
console.log( "The average is:", avg ); // The average is: 9
650650
```
651651

652652
```js
653-
function calculateAverage(list) {
653+
function calculateAverage(nums) {
654654
var sum = 0;
655-
for (let i = 0; i < list.length; i++) {
656-
sum += list[i];
655+
for (let num of nums) {
656+
sum += num;
657657
}
658-
return sum / list.length;
658+
return sum / nums.length;
659659
}
660660

661-
var nums = [1,2,4,7,11,16,22];
661+
var numbers = [1,2,4,7,11,16,22];
662662

663663
var avg = 9;
664664

@@ -688,17 +688,18 @@ What about a function that has a side effect, but this side effect isn't ever ob
688688
Here's one:
689689

690690
```js
691-
function calculateAverage(list) {
691+
function calculateAverage(nums) {
692692
sum = 0;
693-
for (let i = 0; i < list.length; i++) {
694-
sum += list[i];
693+
for (let num of nums) {
694+
sum += num;
695695
}
696-
return sum / list.length;
696+
return sum / nums.length;
697697
}
698698

699-
var sum, nums = [1,2,4,7,11,16,22];
699+
var sum;
700+
var numbers = [1,2,4,7,11,16,22];
700701

701-
var avg = calculateAverage( nums );
702+
var avg = calculateAverage( numbers );
702703
```
703704

704705
Did you spot it?

ch8.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ Simple iterative algorithms can trivially be expressed as recursion:
165165

166166
```js
167167
function sum(total,...nums) {
168-
for (let i = 0; i < nums.length; i++) {
169-
total = total + nums[i];
168+
for (let num of nums) {
169+
total = total + num;
170170
}
171171

172172
return total;
@@ -192,16 +192,16 @@ Recursion is declarative for algorithms in the same sense that **Σ** is declara
192192

193193
```js
194194
function maxEven(...nums) {
195-
var num = -Infinity;
195+
var maxNum = -Infinity;
196196

197-
for (let i = 0; i < nums.length; i++) {
198-
if (nums[i] % 2 == 0 && nums[i] > num) {
199-
num = nums[i];
197+
for (let num of nums) {
198+
if (num % 2 == 0 && num > maxNum) {
199+
maxNum = num;
200200
}
201201
}
202202

203203
if (num !== -Infinity) {
204-
return num;
204+
return maxNum;
205205
}
206206
}
207207
```

ch9.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ To implement `map(..)`:
7272
function map(mapperFn,arr) {
7373
var newList = [];
7474

75-
for (let idx = 0; idx < arr.length; idx++) {
75+
for (let [idx,v] of arr.entries()) {
7676
newList.push(
77-
mapperFn( arr[idx], idx, arr )
77+
mapperFn( v, idx, arr )
7878
);
7979
}
8080

@@ -241,9 +241,9 @@ To implement `filter(..)`:
241241
function filter(predicateFn,arr) {
242242
var newList = [];
243243

244-
for (let idx = 0; idx < arr.length; idx++) {
245-
if (predicateFn( arr[idx], idx, arr )) {
246-
newList.push( arr[idx] );
244+
for (let [idx,v] of arr.entries()) {
245+
if (predicateFn( v, idx, arr )) {
246+
newList.push( v );
247247
}
248248
}
249249

0 commit comments

Comments
 (0)