data
<script>
var users = [
{ name: "a", age:14 },
{ name: "b", age:31 },
{ name: "c", age:30 },
{ name: "d", age:35 },
{ name: "e", age:38 },
{ name: "f", age:40 },
{ name: "g", age:39 },
{ name: "h", age:41 },
{ name: "i", age:58 },
{ name: "j", age:48 },
{ name: "k", age:49 }
];
</script>
get
- Array.prototype.forEach 기능 구현
<script>
var _get = function (obj, key) {
if (obj == null) {
return undefined;
} else {
return obj[key];
}
}
_get(users, "name");
_get(users, 0);
</script>
curry
- 함수와 인자를 다루는 방법
- 함수에 인자를 하나씩 적용해 나가다가 함수의 본체를 실행하는 기법
- 자바스크립트에서는 커링이 지원되지 않지만 1급함수가 지원되고 평가시점을 마음대로 다룰수 있기 때문에 자바스크립트에서 구현가능하다
<script>
function _curry(func) {
return function (a, b) {
if (arguments.length === 2) {
return func(a, b);
} else {
return function (b) {
return func(a, b)
}
}
}
}
var add = _curry(function (a, b) {
return a + b;
});
console.log(add(10)(5));
function _curryr(func) {
return function (a, b) {
if (arguments.length === 2) {
return func(a, b);
} else {
return function (b) {
return func(b, a);
}
}
}
}
var sub = _curryr(function (a, b) {
return a - b;
});
</script>
응용
<script>
var _get_curryr = _curryr(function (obj, key) {
if (obj == null) {
return undefined;
} else {
return obj[key];
}
})
var map1 = _map(
_filter(users, function (item, index, list) {
return item.age > 40;
}),
_get_curryr("name")
);
console.log(map1);
</script>
안녕하세요. curry에 있는 _curry, _curryr 함수 안에 조건문은 왜쓰이는지 알고싶습니다.