728x90
반응형
자바스크립트에서는
var x= 30;
var x= 20;
이와 같은, 코드를 실해했을 때, 자바 스크립트에서는 오류가 발생하지 않는다.
x=30;
document.write(x);
위와 같은 코드도 오류가 발생하지 않는다.
전역 객체의 속성 추가가 되었기 때문이다.
자바에서 this.x와 같은 개념으로 window 객체에 30이란 값이 지정되어있다.
x=30;
document.write(window.x);
이와같이 생략이 가능하고 생략하지 않아도 잘 실행이 된다.
var x = 20;//전역 객체의 속성
function test() {
var x = 30;
document.write(window.x);
}
test();
을 하게되면 20이 출력된다.
그러나
var x = 20; //전역 객체의 속성
function test() {
x = 30;
document.write(window.x);
}
test();
함수안에 var을 지우게 되면 함수 안에 x값이 전역 객체에 다시 저장되어서 이번에는 30이 출력됨을 알 수 있다.
변수에 값을 대입하기 전에 변수 앞에 var을 붙여주지 않으면 전역 객체의 속성으로 대입이된다.
참으로 알다가도 모를 놈이다.
{
var a=1;
}
document.write(a);
또한, 자바 스크립트에서는 중괄호 {} 의 의미가 없다.
위 블럭을 실행해봐도 1이 출력이 되는 것을 알 수 있다.
document.write(a + "<br>");
{
var a = 1;
}
document.write(a);
이 코드에서도 var이 붙냐 안붙냐에 따라 에러가 나고 안나고가 결정이 되는데,
위 코드의 경우, document.write(a);에서는
값이 아직 대입이 되어있지 않아서 undefine값이 나오지만 5번째 라인에서는 1이 대입이 되었기 때문에
이와 같이 선언 되어있는 걸 알 수 있다.
728x90
728x90
'JavaScript' 카테고리의 다른 글
javascript] 이벤트 작성 시 유의점. (0) | 2021.02.18 |
---|---|
javascript]자바스크립트로 반응속도를 체크하는 간단한 웹사이트 만들기 (0) | 2021.01.05 |
로컬스토리지를 이용해서 웹사이트 다크모드 구현하기 (0) | 2020.07.02 |
클로저(Closure) (0) | 2020.05.20 |
[JavaScript] 자바스크립트의 함수 (1) | 2020.05.20 |
댓글