![image](https://habrastorage.org/getpro/habr/post_images/5b6/198/12e/5b619812ee92c0623a7b29b670592bbc.png)
for
, , .
, , , , !
for JavaScript?
for
(. mutation of state — — . ) (. side effects — — . ), .
, — , . , , , . , , .
, (. mutable state — — . ), , . , .
. , . . ? , !
?
, - . , , api, , ..
— , .
, , , . , , . , , .
, .
for
, .
const cats = [
{ name: 'Mojo', months: 84 },
{ name: 'Mao-Mao', months: 34 },
{ name: 'Waffles', months: 4 },
{ name: 'Pickles', months: 6 }
]
var kittens = []
// , for
for (var i = 0; i < cats.length; i++) {
if (cats[i].months < 7) {
kittens.push(cats[i].name)
}
}
console.log(kittens)
, .
-, :
const isKitten = cat => cat.months < 7
var kittens = []
for (var i = 0; i < cats.length; i++) {
if (isKitten(cats[i])) {
kittens.push(cats[i].name)
}
}
— . “ 7 ” “ ” — . . 7 ? . , !
,
isKitten
, , .
— ( ) . , .
const isKitten = cat => cat.months < 7
const getName = cat => cat.name
var kittens = []
for (var i = 0; i < cats.length; i++) {
if (isKitten(cats[i])) {
kittens.push(getName(cats[i]))
}
}
filter
map
, , , (
filter
map
— . ) . , .
const isKitten = cat => cat.months < 7
const getName = cat => cat.name
const kittens =
cats.filter(isKitten)
.map(getName)
,
kittens.push(...)
.
var
.
const
var
let
,
const
, ( ), , !
, ( ).
:
const isKitten = cat => cat.months < 7
const getName = cat => cat.name
const getKittenNames = cats =>
cats.filter(isKitten)
.map(getName)
const cats = [
{ name: 'Mojo', months: 84 },
{ name: 'Mao-Mao', months: 34 },
{ name: 'Waffles', months: 4 },
{ name: 'Pickles', months: 6 }
]
const kittens = getKittenNames(cats)
console.log(kittens)
filter map . : .
- Functional JavaScript: Decoupling methods from their objects
- Functional JavaScript: Function Composition For Every Day Use.
break
, “
break
”, “ JavaScript: break GOTO ”.
.
for
?
, - (@joelnet), , .
!