학습 내용
1.1.1 Scope
1.1.2 Execution Context
1.2.1 block scope
for (let i=0; i < 10; i++) {
console.log(i);
}
if (age > 18) {
console.log("당신은 성인입니다.");
}eles {
console.log("당신은 미성년자입니다.");
}
1.2.2 function scope
-함수 선언식 및 함수 표현식 부분
function getName(user){
return user.name;
}
let getAge = fuction(user) {
return user.age;
}
let greeting = 'Hello';
function greetSomeone() {
let firstName = 'josh';
return greeting + ' ' + firstname;
}
console.log(greetSomeone()); // 'Hello Josh'
console.log(firstName); // ReferenceError
let | const | var | |
---|---|---|---|
유효범위 | 블록 스코프 및 함수 스코프 | 블록 스코프 및 함수 스코프 | 함수 스코프 |
재선언 | 불가능 | 불가능 | 가능 |
값재할당 | 가능 | 불가능 | 가능 |
let adder = x => x + y ;
// 위의 코드와 동일하게 작동하는 코드 입니다.
let adder = function (x) {
return function (y) {
return x + y;
}
}
let adder = function (x) {
return function (y) {
return x + y;
}
}
let add5 = adder(5); // 5라는 계속 사용할 변수 선언
let add5(10); // 15
let add5(15); // 20
let tagMaker = tag => content => `<${tag}>${content}</${tag}>`
// 위의 코드와 동일하게 작동하는 코드 입니다.
let tagMaker = function(tag){
return function(content){
return `<${tag}>${content}</${tag}>`
}
}
let divMaker = tagMaker('div'); // 'div' 라는 계속 사용할 변수 선언
divMaker('hello') // '<div>hello</div>'
divMaker('codestates') // '<div>codestates</div>'
let anchorMaker = tagMaker('a'); // 'a' 라는 계속 사용할 변수 선언
anchorMaker('hello') // '<a>hello</a>'
anchorMaker('codestates') // '<a>codestates</a>'
느낀 점
변수의 스코프는 선언 위치 및 중괄호를 잘 보아야 해서 까닥하면 실수하기가 너무 쉬워보인다. 연습만이 살길인거 같다.
클로저는 위의 예시로는 알겠지만 인터넷에서 검색해본봐로는 아직 한참 먼거 같다. 더 공부하자.
미비한 점
클로저 함수의 활용예시를 인터넷에서 더 찾아보고 어떻게 실무에서 쓰이는지 파악하자.