말장난으로 시작한 제목과는 달리 역설적으로 JavaScript에선 global space를 더럽히는 일은 죄악처럼 여겨진다. 특히나 통제할 수 없는 다른 사람이 작성한 JavaScript 코드가 섞여들어 갈 가능성이 큰 Client-Side JavaScript에선 더욱 그러하다.
그래서 뜻하지 않는 이런 실수를 저지르지 않으려면 변수가 global 해지는 경우를 정확하게 알고 있어야 하는데, 그 예로 다음과 같은 몇 가지 경우가 있다.
var로 시작되지 않는 변수 선언.
잘 알려진 내용으로 var
없이 선언된 변수는 global object의 properties에 붙게 된다.
참고로, 이렇게 만들어진 property는 var
선언문으로 생성된 property와는 다르게 다시 나중에 delete
로 지울 수 있다.
var x = 1; // A properly declared global variable, nondeletable.y = 2; // Creates a deletable property of the global object.thisz = 3; // This does the same thing.delete x; // => false: variable not deleteddelete y; // => true: variable deleteddelete thisz; // => true: variable deleted
다음은 JavaScript의 delete operator 작동 원리에 대한 자세히 설명해놓은 글. – Perfection Kills – Understanding delete