3일만에 끝내는 HTML, CSS, JS 기초
j41. 자바스크립트 호이스팅과 스트릭트 모드 본문
자바스크립트 호이스팅과 스트릭트 모드
호이스팅 (Hoisting) 은 자바스크립트의 기본 기능으로서, 선언 (declarations) 을 맨 위로 이동 시킵니다. 자바스크립트의 선언은 호이스트 됩니다. 자바스크립트 에서는, 변수는 먼저 사용된 다음에 선언 될수도 있습니다. 다른 말로는, 변수는 선언되기 전에 사용될 수도 있습니다.<script> myDate = new Date(); // 변수 myDate 에 날짜 값을 할당하였습니다. alert("현재 시각은 " + myDate + " 입니다."); // 변수 myDate 의 값을 사용하였습니다. var myDate; // 맨 뒤에서 변수 myDate 를 선언합니다. </script>이것을 이해하려면 "호이스팅 (hoisting)" 이라는 용어를 이해해야 합니다. 호이스팅은 자바스크립트의 기본 기능으로서 선언을 현재의 스크립트나 함수의 맨 윗 부분으로 이동시킵니다. 그렇지만 자바스크립트는 초기화 (Initializations, 초기 값을 할당하는 것) 는 호이스트 하지 않습니다. 자바스크립트는 단지 선언만 호이스트 하고, 초기화는 호이스트 하지 않습니다.
사실 호이스팅은 대부분의 자바스크립트 개발자에게 알려져 있지 않고 간과된 기능입니다. 그래서 버그를 피하려면, 항상 변수 들은 각 구역의 맨 처음에 선언해 줍니다.
그러나 한편, 자바스크립트의 스트릭트 모드 (strict mode) 에서는 변수들은 선언되기 전까지는 사용되는 것이 용인되지 않습니다.
"use strict"; 라고 코딩하면, 이것은 자바스크립트 코드가 "스트릭트 모드 (strict mode)" 에서 실행되어야 한다는 것을 의미합니다. "use strict" 지시어 (directive) 는 JavaScript 1.8.5 (ECMAScript 버전 5) 에서 새롭게 등장 하였습니다. 이것은 지시문 (statement) 은 아니지만 문자 표현식 (a literal expression) 이며, 자바스크립트의 그 이전 버전에서는 무시됩니다. "use strict" 의 목적은 코드가 "스트릭트 모드 (strict mode)" 에서 실행되어야 한다는 것을 표현하는 것입니다. 이 strict mode 에서는 선언되지 않은 변수들 (undeclared variables) 은 사용할 수가 없습니다. 이 strict mode 는 인터넷 익스플로러 버전 10 이상에서 부터, 그리고 크롬 버전 13 부터 지원됩니다.
strict mode 를 사용하는 이유는 자바스크립트 코드를 "안전하게 (secure)" 쓰기에 용이하기 때문입니다. strict mode 에서는 그전에는 받아 들여 졌던 "나쁜 구문" 을 실제 에러로 바꾸어 버립니다. 예를 들어 일반 자바스크립트 에서는, 변수 이름을 잘못 쓰면, 그냥 새로운 전역 변수인가 보다 하지만, strict mode 에서는 에러를 만들게 됩니다. 그래서 우연하게 전역 변수를 생성하지 못하게 합니다. 일반 자바스크립트 에서는 개발자가 어떤 에러 피드백을 받지 못할 수 있지만, strict mode 에서는 에러를 생성하여 좀더 "안전한" 코드를 작성할 수 있게 합니다.
<pre>자바스크립트의 스트릭트 모드 (strict mode) 에서는 변수들은 선언되기 전까지는 사용되는 것이 용인되지 않습니다.</pre> <pre>"use strict"; 라고 코딩하면, 이것은 자바스크립트 코드가 "스트릭트 모드 (strict mode)" 에서 실행되어야 한다는 것을 의미합니다. "use strict" 의 목적은 코드가 "스트릭트 모드 (strict mode)" 에서 실행되어야 한다는 것을 표현하는 것입니다. 이 strict mode 에서는 선언되지 않은 변수들 (undeclared variables) 은 사용할 수가 없습니다. 이 strict mode 는 인터넷 익스플로러 버전 10 이상에서 부터, 그리고 크롬 버전 13 부터 지원됩니다.</pre> <pre>strict mode 를 사용하는 이유는 자바스크립트 코드를 "안전하게 (secure)" 쓰기에 용이하기 때문입니다. strict mode 에서는 그전에는 받아 들여 졌던 "나쁜 구문" 을 실제 에러로 바꾸어 버립니다. 예를 들어 일반 자바스크립트 에서는, 변수 이름을 잘못 쓰면, 그냥 새로운 전역 변수인가 보다 하지만, strict mode 에서는 에러를 만들게 됩니다. 그래서 우연하게 전역 변수를 생성하지 못하게 합니다. 일반 자바스크립트 에서는 개발자가 어떤 에러 피드백을 받지 못할 수 있지만, strict mode 에서는 에러를 생성하여 좀더 "안전한" 코드를 작성할 수 있게 합니다.</pre> [광고] Udemy 동영상 강의로 보기
'JAVASCRIPT' 카테고리의 다른 글
j43. 자바스크립트에서 저지르기 쉬운 실수 (1) | 2016.06.05 |
---|---|
j42. 자바스크립트 코딩 규칙 (0) | 2016.06.05 |
j38. 자바스크립트 디버깅 (0) | 2016.06.05 |
j37. 자바스크립트 에러 처리 (0) | 2016.06.05 |
j36. 자바스크립트 정규 식 (0) | 2016.06.05 |