본문 바로가기
Javascript

Javascript/자바스크립트 "use strict"란 ?

by 전재경 2022. 10. 21.

Use stirct란 ?

 

ES5부터 지원하는 use strict는안전한 코딩을 위한 하나의 가이드라인.

 

strict mode 란?

  • Strict Mode는 코드에 더 나은 오류 검사를 적용하는 방법
  • Strict Mode를 사용하면, 암시적으로 선언한 변수를 사용하거나 읽기 전용 속성에 값을 할당하거나 확장할 수 없는 개체에 속성을 추가할 수 없습니다.
  • Strict Mode는 ECMAscript 5버전에 있는 새로운 기능, 엄격한 운용 콘텍스트 안에서 실행시킬 수 있게끔한다.

 

Strict Mode의 장점

 

  • 흔히 발생한느 코딩 실수를 잡아내서 예외를 발생
  • 상대적으로 안전하지 않은 액션이 발생하는 것을 방지
  • 정확하게 고려되지  않은 기능들을 비활성화
//암시적 변수 선언과 할당
X = 3.14; // 3.14

이 모드를 사용하려면 코드 맨 앞(해당 스코프의 시작)에 문자열 리터럴

use strict("use strict" 혹은 'use strict')형태로 이루어진 하나의 행을 쓰면 된다.

"use stirct"; // 'use strict'
//세미콜론 여부 상관 X

이렇게 사용하면 전역 스코프에 strict mode가 적용 ->

script 전체가 strict mode로 실행, script 전체의 동작 방식이 바뀐다.

 

but 함수 안에서 use strict를 사용하면 

해당 함수만 strict mode가 실행

 

strict mode를 사용함으로써, error가 발생되고 exceptions이 throw 된다.

 

"use stirct";
X = 3.14; // Uncaught ReferenceError: X is not defined

이러한 이점을 취할 수 없는 케이스가 있다.

X = 3.14
"use stirct"; // 'use stirct'

단순히 {} 를 생성한 임의의 블록 구문에는 적용 X

 

엄격 모드가 없으면, 선언되지 않은 변수에 값을 할당시에

해당 이름의 전역 변수가 자동으로 생성

이것은 JS에서 가장 일반적인 오류 중 하나로서 strict mode에서는 그렇게 하면 오류가 발생

 

this coercion을 제거한다

strict mode가 없으면 this의 null 또는 undefined 값에 대한 참조가 자동으로 전역게 강제

이로 많은 버그가 발생할 수 있다.

 

참고 블로그 : https://m.blog.naver.com/on21life/221654555798

댓글