스코프란? scope
변수를 선언하고 사용할 때 변수가 적용되는 유효범위를 뜻함.
변수가 유효하게 쓰일 수 있는 영역을 가리키는 것이다.
자바스크립트에서 함수에서 변수를 사용할 때 영역에 주의해야한다.
한 함수 안에서만 사용하고 다른 함수에서 사용할 수 없는 변수가 있는가 하면,
어느 함수에서나 다 사용할 수 있는 변수가 있다.
한 함수에서만 사용할 수 있는 변수를 '지역변수' 또는 '로컬변수'라고 한다.
어느 함수에서나 다 사용할 수 있는 변수를 '전역변수' 또는 '글로벌변수'라고 한다.
( 전역변수는 script부분안에서 어디든지 접근할 수 있기에 어디서 값을 바꿀지 몰라 위험해서 되도록 안쓴다.
주로 지역변수를 쓴다. 함수 안에 들어있으면 지역변수. )
var처럼 전역에서 쓰이는 변수는 '함수 레벨의 스코프를 가진다'라고 표현하고 스크립트 소스 전체를 의미한다.
<script> </script> 이 안에 있는 것 : 함수 레벨의 스코프 또는 함수 영역
1. 함수 안에서만 쓸 수 있는 지역변수
지역변수는 함수 안에서 선언하고, 함수 안에서만 사용한다.
지역변수를 선언하려면 예약어 var와 함께 변수 이름을 함수 안에서 지정해야한다.
지역변수는 비유하자면 건전지와 비슷하다.
건전지는 기계 안에 들어있으면 그 기계안에서만 사용할 수 있듯이 지역변수로 만들어놓으면 그 함수 안에서만 사용할 수 있다.
function addNum() {
var num1 = 2;
var num2 = 3;
var sum = num1 + num2;
document.write(sum);
}
위에서 num1 , num2가 지역변수.
sum 변수는 지역변수로, 함수 안에만 있고 그 밖에 없기 때문에 밖에서 콘솔로그로 sum을 부르면 값이 없다고 에러가 뜨게 된다.
(sum변수가 addNum함수 안에서 선언되었기 때문에 유효범위를 벗어나서 에러메세지가 뜨는 것.)
그래서 함수 안으로 콘솔로그를 데려오면 값이 나오는 것을 확인할 수 있다.
2. 스크립트 전역에서 쓸 수 있는 전역변수
전역변수는 적용범위를 제한하지 않고 쓸 수 있다.
즉 전역 변수는 지역변수와 달리 스크립트 소스 코드 전체에서 사용할 수 있다.
비유하자면 건전지가 기계 안에 있지 않고 집안에 있다면 어느 기계든 건전지를 사용할 수 있듯이 밖에 나와있는 건전지와 비슷하다.
변수를 전역으로 사용할 때에는 함수 밖에서 선언하거나, var 예약어를 생략하고 선언해야한다.
함수 안에서 var라는 단어를 생략하고 쓰면 전역변수가 된다.
** var라는 단어를 생략하면 전역변수로 쓸 수 있다.
함수 안에다 result2를 썼어도 var 키워드가 없어서 전역변수가 되었고, 함수 밖에다가 콘솔로그 result2를 해도 값이 나오게 된다.
'자바스크립트 > 변수' 카테고리의 다른 글
[자바스크립트] - 변수의 재선언 / 재할당 (0) | 2024.07.26 |
---|---|
[자바스크립트] - 변수 let / 함수레벨의 스코프(함수영역) , 블록레벨의 스코프(블록영역) (1) | 2024.07.25 |
[자바스크립트] - var를 이용한 변수의 특징 - 호이스팅 hoisting을 한다 (0) | 2024.07.25 |
[자바스크립트] - 변수 이름 지을 때 규칙 (코딩 컨벤션) (0) | 2024.07.05 |
[자바스크립트] - 변수에 담을 수 있는 자료형 / 문자형(String), 숫자형(Number), 논리형(Boolean), 빈 데이터(Null, undefined) //문자형 숫자를 다시 숫자형 데이터로 변환하고 싶을때 (0) | 2024.07.05 |