function sum(a, b) {
return a + b;
}
let sum = function(a, b) {
return a + b;
};
const score = 90;
const PassOrFail = (score >= 80)
?
function(){
console.log(`${score}점은 합격입니다.`);
}
: function (){
console.log(`${score}점은 불합격입니다.`);
};
PassOrFail();//정상적으로 호출
arguments
에 담겨 전달됩니다.function avg() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum/arguments.length;
}
const result = avg(1, 2, 3);
console.log(result);
//2
function avg(){
arguments.reduce((prev,curr,index,arguments)=>{
if(index === arguments.length-1){
return (prev+curr)/arguments.length;
}
else{
return prev+curr;
}
});
};
console.log(avg(1, 2, 3));
rest
라는 값 확산 문법 function avg(...args) {
let sum = 0;
for (let i = 0; i < args.length; i++) {
sum += args[i];
}
return sum/args.length;
}
const result = avg(1, 2, 3);
console.log(result);
rest + reduce 이용해서 평균 구하기!
const avg =(...arguments)=> arguments.reduce((prev,curr,index)=>{
if(index === arguments.length-1){
return (prev+curr)/arguments.length;
}
else{
return prev+curr;
}
});
console.log(avg(1, 2, 3));
console.log(avg(1, 2));
console.log(avg(1, 2, 3, 4, 5));
/*
2
1.5
3
*/
// 함수를 return 하는 함수
function countLength (str) {
const count=()=>{
return str.length;
};
return count;
};
const hello = countLength("hello");
const hi = countLength('hi');
console.log(hello());//5
console.log(hi());//2
// 함수를 인자로 받아 대신 실행하는 함수
function countLength(val, func){
return func(val);
}
function count(str){
return str.length;
}
console.log(countLength('hello', count));//5
//1초뒤 first 출력 2초뒤 second 출력
function callbackExample(f) {
setTimeout(()=>{
f('first');
setTimeout(()=>{
f('second');
},2000)
},1000 )
}
callbackExample(function(str){
console.log(str);
});
const add = (a,b) => a+b;
console.log(add(1, 2)); //3
function makeCounter() {
let count = 0;
return f;
function f() {
return count++;
}
}
let counter = makeCounter();
console.log(counter());//0
console.log(counter());//1
console.log(counter());//2
function makePerson(num) {
let age = num;
return{
getAge(){
return age;
},
setAge(x) {
age = x>1 && x<130 ? x: age;
}
}
}
let p = makePerson(10);
console.log(p.getAge());//10
p.age=500;
console.log(p.getAge());//10
p.setAge(24);
console.log(p.getAge());//24
반환된 함수가 외부의 스코프를 기억하고 있는 상태를 클로저라하며, 요약해서 함수의 독립적인 변수(자유 변수)를 가지고 있는 것을 클로저라고 한다.