① 호출한 사람의 앞에꺼
② new 앞에 받은 거
③ 함수 안에 함수 안에 this = window (암기)
var a = func(){}
func() {}
대놓고 씀
스코프 = 범위
(복제와 별도로) 범위 바깥의 함수도 바꿔줌
{} 안에서 진행
함수에의해 생기는 범위, 변수 유효범위
블록에 의해 생기는 범위, {}에의해서 변수의 유효범위가 결정된다.
아래에서 위로 끌어올리다.
1) 변수명만 위로 끌어올리고
2) undefined를 할당한다.
선언하고 초기화x, 이름o, 값x
1) 변수명만 위로 끌어올리고 끝.
2) reference 에러
선언하지 않은 값에대한 에러
let, const에 한하여 {이 안에 순서대로 변수를 선언하지 않으면} 호출할 수 없다.
예시1) {console.log(a) const a = 20} # 순서X 예시2) {const a = 20 console.log(a)} # 순서O
날 실행할 권리를 함수에게 줌
원래라면 순서대로 ①->②->③ 진행해야함
근데 ②가 비동기함수라면,
①->②(처리중)->③->②(완료)