Javascript | variable

자바스크립트의 변수는 타입을 지정해주지 않는 방법으로 선언을 하 사용을 합니다.

var키워드를 이용해 타입 지정 없이 선언을 하고 사용합니다.

1
2
3
var id; // 타입 없이 선언
var id = 372; // 숫자 값 할당
id = "372"; // 문자열(다른 타입) 값으로 변경 가능

동시에 여러 변수를 선언할 수 있습니다.

1
2
3
var idNum, name;
idNum = 1;
name = "삼치리";

변수를 선언 할 때 undefined 로 되어 있다가 할당 코드가 나오면 값이 할당 됩니다.

유효 범위(scope)

1
2
3
4
5
6
var name = "global"; // 전역 변수를 선언
function checkscope(){
var name = "local"; // 지역 변수를 선언
console.log(name); // 전역 변수가 아닌 지역 변수를 사용
}
checkscope(); // 출력 결과: "local"

전역변수(global variable)

전역적으로 정의되어 있는 변수를 말합니다.

var 키워드 없이 변수를 선언하면 자동으로 전역 변수가 됩니다.

1
2
3
4
5
6
7
8
var name = "global"; // 전역 변수를 선언
function checkscope(){
name = "local"; // 전역 변수를 변경
name2 = "local"; // 암묵적으로 새 전역 변수가 선언됨
}
checkscope();
console.log(name); // output: "local"
console.log(name2); // output: "local"

지역변수(local variable)

함수내부에서 선언되며 함수내부에서만 유효합니다.

함수가 실행될 때 함수 내부에 있는 모든 변수는 가장 위로 배치됩니다. 하지만 선언만 유효하고 할당 값은 해당 코드의 위치가 수행될 때 할당 됩니다. 그 이전에는 undefined 입니다.

1
2
3
4
5
6
var name = "삼치리"; // 전역 변수
function f() {
console.log(name); // "삼치리" 가 아니라 undefined 가 실행(지역변수가 우선)
var name = "비밀"; // 지역 변수
console.log(name); // "비밀"
}

중첩함수의 유효 범위

중첩 함수에서 내부 함수는 그것이 담긴 함수의 변수에 접근할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
function changeName(name){ // "name"은 지역 변수다
function inner1(){
name = name + "-inner1";
function inner2(){
name = name + "-inner2";
}
inner2();
}
inner1();
return name;
}
console.log(changeName("Hello")); // Hello-inner1-inner2

블록 유효 범위

블럭 유효범위가 없어서 블럭이 닫힌 후에도 블럭 내부의 변수를 사용할 수 있습니다.

1
2
3
4
5
6
7
{
var count = 10;
}
console.log(count); // 10
for (var i=0; i<11; i++){}
console.log( i ); // 11

Java,C 등의 언어와 비교해서 변수의 사용방법과 유효성이 조금 달라서 헷갈리지 않게 잘 익혀둬야할 내용이라고 생각합니다.

web javascript