자바스크립트에 대해 공부한 내용을 정리

추후 필요 시 참고 목적으로 작성함


함수는 자바의 메서드와 전혀 다름

자바스크립트 함수는 "객체"


함수의 정의 방법

함수 리터럴 방식 사용 추천


호이스팅의 순서

- 선언적 함수가 먼저 호이스팅 되고 이후 var 호이스팅

- 선언적 함수는 함수 값까지 주어짐, var는 변수만 선언함(값 X)


함수 리터럴은 호이스팅 되지 않음

so, 함수 이름도 충돌되지 않도록 주의 해야 한다



함수가 함수를 리턴하는 것에 대해 익숙해져야 한다.

왜? 자바스크립트의 함수는 위에서 말한 것처럼 "객체"처럼 쓰기 때문


jQuery는 기존 방식인 MPA(Multiple Page Application)에서는 강력함


함수 실행 시 함수 컨텍스트가 만들어지고 호출 객체도 생성

함수가 호출될 때도 호이스팅이 일어남


스코프, 스코프체인


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<title>03-12</title>
<script type="text/javascript">
var msg = "GLOBAL";
 
function outer() {
    //var msg = "OUTER";
    console.log(msg);
    inner();
    function inner() {
        var msg = "INNER";
        console.log(msg);
    }
}
 
outer();
</script>
</head>
<body>
 
</body>
</html>
cs

결과: GLOBAL, INNER


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<title>03-12</title>
<script type="text/javascript">
var msg = "GLOBAL";
 
function outer() {
    var msg = "OUTER";
    console.log(msg);
    inner();
    function inner() {
        var msg = "INNER";
        console.log(msg);
    }
}
 
outer();
</script>
</head>
<body>
 
</body>
</html>
cs

결과: OUTER, INNER


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<title>03-12</title>
<script type="text/javascript">
var msg = "GLOBAL";
 
function outer() {
    //var msg = "OUTER";
    console.log(msg);
    inner();
    function inner() {
        //var msg = "INNER";
        console.log(msg);
    }
}
 
outer();
</script>
</head>
<body>
 
</body>
</html>
cs

결과: GLOBAL, GLOBAL

+ Recent posts