javascript에서도
지역/전역 변수의 의미는 다른 언어들과 마찬가지다.
허나 언어적 특성이 있기때문에 주의해야 할 부분들이 있다.
1. 전역변수는 'var' 문자없이 선언할 수 있다. 'var' 가 없이 선언된 변수는 전역변수이다.
2. 지역변수는 함수안에서만 적용된다, 다른 블럭({ }) 범위에서는 의미없다.
3. 호이스팅(뜻: 끌어올리다)
Q : 뭘끌어 올릴까?
A : 변수선언식
Q : ....응??
첫줄에서 전역변수로 선언했다손 치더라도
내부적으로 before가 호출되기전에
f1함수에서 아래 선언문이 먼저 끌어올려진다.
따라서 f1내부에 함수선언부를 제거하면
before와 after는 전역변수 name의 값이 출력된다.
지역/전역 변수의 의미는 다른 언어들과 마찬가지다.
허나 언어적 특성이 있기때문에 주의해야 할 부분들이 있다.
1. 전역변수는 'var' 문자없이 선언할 수 있다. 'var' 가 없이 선언된 변수는 전역변수이다.
var name1 = "AAAA"; console.log(name1); // AAAA name2 = "BBBB"; console.log(name2); // BBBB
2. 지역변수는 함수안에서만 적용된다, 다른 블럭({ }) 범위에서는 의미없다.
var test=true; if (test) { var name1 = 'AAAA'; } console.log(name1); // "AAAA" function sayHello () { var name2 = 'BBBB'; } console.log(name2); // name2 is not defined
3. 호이스팅(뜻: 끌어올리다)
Q : 뭘끌어 올릴까?
A : 변수선언식
Q : ....응??
var name = 'AAAA'; function f1() { console.log("before : " + name); //undefined var name = "BBBB"; console.log("after : " + name); //BBBB } f1();before에서 undefinde가 나왔다.
첫줄에서 전역변수로 선언했다손 치더라도
내부적으로 before가 호출되기전에
f1함수에서 아래 선언문이 먼저 끌어올려진다.
var name;
console.log("before : "+name);
name = "BBBB";
console.log("after : "+name);
따라서 f1내부에 함수선언부를 제거하면
before와 after는 전역변수 name의 값이 출력된다.
var name = 'AAAA'; function f1() { console.log("before : " + name); //AAAA //var name = "BBBB"; console.log("after : " + name); //AAAA } f1();
댓글
댓글 쓰기