엄격모드 'strict mode'의 배경과 기능
ES5 (ECMA Script5) 가 등장하기 전까지
호환성 이슈 없이 발전해왔다
즉, 기존의 기능을 변경하지 않으면서 새로운 기능이 추가 되었다
ES5에서 새로운 기능이 추가
기존 기능 중 일부가 변경되었다.
-> 호환성 문제 발생 가능
호환성 문제로 인해
변경사항 대부분은 ES5의 기본 모드에선 활성화 되지 않도록 설계됨
대신!!!
use strict 로 엄격모드 (strict mode) 를 활성화 했을 때만 ES5의 변경 사항이 활성화 되도록 해둠
' use strict '
이 use strict 지시자가 스크립트 최상단에 오면 스크립트 전체가 모던한 방식으로 작동
- 반드시 스크립트 최상단에 위치
- + 스크립트 최상단 뿐만 아니라 함수 본문 맨 앞에 올 수도 있다
- 이때는 오직 해당 함수만 엄격 모드로 실행
"use strict";
// 이 코드는 모던한 방식으로 실행됩니다.
즉 아래와 같은 경우에는 엄격모드가 활성화 되지 않는다
alert("some code");
// 하단에 위치한 "use strict"는 스크립트 상단에 위치하지 않으므로 무시됩니다.
"use strict";
// 엄격 모드가 활성화되지 않습니다.
참고로 자바스크립트 엔진을 이전 방식으로 되돌리는 지시자는 없다
따라서 use strict (엄격모드)가 적용되면 되돌릴 수 없다
브라우저 콘솔은 'use strict'가 적용되어 있지 않다
어떻게 콘솔에서 use strict를 사용할 수 있을까
'use strict' 입력후
Shift + Enter 키를 눌러 줄바꿈한 후
스크립트 입력
'use strict' 사용은 필수?
클래스, 모듈을 사용하면 자동으로 'use strict' 가 적용
따라서 클래스와 모듈을 사용한다면 스크립트에 'use strict'를 붙이지 않아도 됨