난 정말 최고야 멋있어
ydkjsy-scope-closures Chapter 3 본문
"Lookup" IS (Mostly) Conceptual
Shadowing
섀도잉이란 그것.. 다른 스코프에 같은 이름의 변수
같은 이름을 사용하기 위해서는 다른 스코프를 사용해야한다
var studentName = "Suzy";
function printStudent(studentName) {
studentName = studentName.toUpperCase();
console.log(studentName);
}
요 위의 코드에서 함수 내부의 studentName과 스코프 바깥의 studentName은 서로 섀도잉이 돼서 다른 객체를 가리킴!!!
따라서 함수내부에서의 studentName의 조작은 함수 외부에 영향을 미치지 않음
섀도잉됬을때도 전역객체에 접근하기 위해 window의 객체로 전역변수에 접근할 수 있다(웹에선 노드는 안댐 ㅋㅋ && var 선언된 객체)
음 객쳉의 요소로 집어넣는건 복사임 ㅇㅇ 그걸로 직접 접근 못함 ㅅㄱㄹ
글 고 let 은 outscope의 var shadowing 가눙
var 은 outscope의 let 만 섀도잉 가능!!!
Function Name Scope
var askQuestion = function ofTheTeacher() { console.log(ofTheTeacher); };
여기선 ofTheTeacher가는 ㅡ냥 함수 자신의 스코프를 가진다!!!!!
+ strict 모드라면 ro 로 선언ㅇ됨 : 수정 불가능 수고링~~~
ArrowFunctions
es6이후 ㅋㅋ
this 없음 이놈은ㅋㅋ 근데 이게 핵심인데 책에 안나오네 ㅋㅋ
파라미터 ㅇ한개던가하면 파라미터 생략할수있고 단순리턴만하는경우엔 중괄호 생략간웅 ㅋㅋ
요것도 짜신만의 함수스코프를 만든다는건 똑같혀 ㅋㅋㅋ
Backing Out
응 스코프체인이있고
동일이름이잇으면 섀도잉이야
계속 나가면 글로-발 스코프야!! 이건 담챕터에서 보자구 >,<