function fbScope() {
const abc = 'abc';
const t = false;
if (t) {
console.log('inside if block');
var v = 1;
const x = 3;
console.log(v, x, abc); // << 여기서 abc 왜출력되는거임?
} else {
const bbb = "bbb"
}
console.log(typeof v, typeof x, typeof abc);
}
fbScope();
const랑 let 블록스코프라면서(블록내에서 못나감)
왜 abc에서 "abc" 잘만 출력됨?
함수선언문 안에 있어서 그런거야?
블록 안이잖아
아니 콘솔로그 실행한 블록은 if문 안이잖아
아니 if문 자체가 블록 내에 있는거야 너가 블록 개념을 잘못 알고 있는거
ㅜㅜ
다시 읽어볼께 미안 진짜 빡대가리인가... 코어도 읽어봤고 인사이드도 읽어봤고 딥도 초반부 읽었었는데 막상 코딩하니까 아에 기억에 없네.. 그냥 선언하고 쓸줄만 알았지
블록 레벨 스코프(Block-level scope) 모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다. 단박에 이해했다 씨발...
ㅇㅅㅇ;;; - dc App
const abc의 블록이 시작하고 나서 그 블록이 끝나지 않았잖슴~ 그러면 계속 살아있는거임
아 그 그 하위 블록은 포함되는거야?
완전히 확답을 못하겟지만 알려줄까 .ㅅ.
너 진짜 열심히 공부한다
하루에 몇시간 공부함?
어... 나 오늘 공부 하나도 안햇는데!! 하루에 3시간...???? 거의 안해 요즘 공부 너무 시러서...
룬테라 추천함 재밌음. 아니면 롤토체스. 이 2개가 피지컬 많이 안써도 되서 덜피곤함
블록스코프이기때문에, 만약 너가 if문 안에 let abc = 1;이렇게 다른 let, const키워드로 변수선언을 한다면 1이 출력될거야. 그 이유는 let, const는 블록스코프이기 때문에 블럭 밖의 스코프에서 선언한 abc랑 if문 안의 abc랑은 다른 변수이기 때문이야. 하지만, if문 안에서는 abc가 없기에 상위스코프로 올라가서 abc가 있는지
찾아볼때 함수스코프에 abc 변수가 abc 문자열로 바인딩되어잇는게 보이네?? 그러니 상위스코프의 abc 변수를 참조하는거야!
ㅇㄴ ㅋㅋㅋ 나 겜 개못해서 테트리스만 함 아 ㅋㅋㅋㅋ
블록 레벨 스코프(Block-level scope) 모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다. 단박에 이해했다 씨발... 단순히 이건줄 알았는데 니말이 맞네 수정해보니까 안에 있는 abc 참조함.
하스스톤같은 딱지겜임. 룬테라
귀엽네 따먹고싶게