보안상의 이유 때문.
..이라고 적었지만 구체적으로 어떤 뜻인지는 잘 이해가 안 되므로 MDN 설명을 그대로 적어보겠다.
for security and organization
예를 들어, 외부에서 불러온 스크립트 안에 있는 변수나 함수 이름이 내 코드 안의 변수나 함수 이름과 같아서 충돌하면 코드가 제대로 작동하지 않고 이상하게 꼬여버린다.
✨ MDN에 좋은 비유가 있다!
코드는 동물원과 비슷하다.
사자, 얼룩말, 펭귄은 각자 자기 서식지 안에서 살아야 한다. 사자가 펭귄 서식지로 들어가거나 펭귄이 얼룩말 서식지에서 살게 되면 엄청 불편할 거다. 사자가 펭귄을 잡아 먹을 수도 있고...
zookeeper == global scope
사육사(zookeeper)가 각 동물의 서식지 울타리를 여는 키를 갖고 있어서 문도 열고 음식도 주고 아픈 동물도 돌볼 수 있듯, global scope에서는 어디에든 접근할 수 있다.
❗❕ 이 scoping 규칙은 반복문(ex) for() {...})과 조건문(ex) if() {...})에는 적용되지 않는다.
참고한 자료: MDN - Functions