이 내용은 '생활코딩'에서 공부한 내용을 정리한 글이다.
자세한 내용은 https://www.opentutorials.org/course/743 이곳에서 확인할 수 있다.
모든 내용의 출처는 이곳이다. 다른 언어를 알고있는 상태로 공부한 내용이다.
보통 변수의 유효범위는 scope를 통해 알 수 있다. C/C++에서 기본적으로 함수 안에있는 것을 지역변수, main함수 밖에 있는 것을 전역변수라 하며 각 변수마다 사용할 수 있는 범위가 존재한다.
자바스크립트에서는 var을 사용하지 않은 변수는 전역변수가 된다. 함수안에서 var을 사용해야 지역변수가 된다. 아래의 예시와 주석을 통해 이해할 수 있다.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script>
var scope = 'global';
function fs(){
scope = 'local';
// var을 사용하지 않은 지역변수는 전역변수가 된다!!
// 변수를 선언할 때, var을 사용하는 습관화로 지역변수로 사용하자
// 전역변수의 값을 변경하게 됨
document.write('함수 안 : ' + scope + '<br />');
}
fs();
document.write('함수 밖 : ' + scope + '<br />');
function a() {
i = 0; // var로 선언하여 지역변수로 만들어줘야함
}
for (var i = 0; i < 5; i++) { // i는 전역변수
//a(); // 함수의 i는 0으로 바뀌면서 i는 전역변수를 뜻함 -> i가 계속 0이됨
// 즉 a()를 호출하면 i값은 계속 0이 된다. -> 무한루프
document.write(i);
}
(function() {
myvar = {} // 객체생성, 전역변수를 만듬
'left': null,
'right': null
}
myvar.cor = {
'left': null,
'right': null
}
}())
// 익명함수 : ()는 바로 실행, 이름이 없는 함수
for (var i = 0; i < 1; i++) {
var name = 'HTK'; // 자바스크립트에서 변수는 함수안에서만 지역변수이다.
} // for문 안에 있기때문에 지역변수가 아니다.
document.write(name + '<br />'); //전역변수라서 실행에 문제가 없다.
var ii = 5; //전역변수
function aa() {
var ii = 10; // 지역변수
bb();
}
function bb() {
document.write(ii); //5가 사용됨
//함수 bb가 호출될때가 아니라, 정의될 때의 전역변수를 사용
//ii는 정의될 때의 전역변수가 사용될 때, 정적 유효범위라고함
}
aa();
</script>
</body>
</html>
|
'JavaScript' 카테고리의 다른 글
[Javascript] 함수의 호출(apply) (0) | 2019.05.27 |
---|---|
[JavaScript] arguments 객체 (0) | 2019.05.19 |
[JavaScript] 객체 (0) | 2019.05.08 |
[JavaScript] 함수, 배열 (0) | 2019.05.08 |
[JavaScript] 조건문, 반복문 (0) | 2019.04.28 |