Javascript

use strict에 대한 이해 :: 마이구미

mygumi 2017. 11. 17. 18:22
반응형

이 글은 'use strict' 에 대해 다룬다.

단순히 엄격 모드라고 알려진 더 나은 오류 검사를 위한 방법이다.

참고 링크 - https://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it

use strict 문서 - https://msdn.microsoft.com/ko-kr/library/br230269(v=vs.94).aspx


'use strict' 즉, 엄격 모드는 ES5부터 새로운 기능이다.

Lint를 통한 에러 또는 다른 개발자의 코드를 통해 'use strict' 가 타이핑되어 있는 것을 경험했을 것이다.



엄격 모드를 사용하는 방법은 어떻게 되는가?


단순히, 'use strict' 를 타이핑하면 된다.

선언 범위는 컨텍스트에 따라 달라진다.

상단에 코드를 입력하면, 즉, 전역 컨텍스트에 명시하면 모든 코드에 반영된다.


모든 코드에 엄격 모드를 사용하면 되기에, 첫 줄에 입력하여 사용하면 된다.

하지만 이미 작성된 코드에 에러가 발생한다면, 새로 추가할 컨텍스트에 대해서만 엄격 모드를 사용하면 된다.

그렇게 차차 코드를 수정한 후 전역으로 돌리면 된다.


'use strict'


function func() {

let a = 1

return a

}


a = 5 // a is not defined


function func() {

'use strict'

a = 1 // a is not defined

return a

}


func()


엄격 모드가 사용해야 이유는 더 나은 오류 검사인가? 다른 이유는 없는가?


그렇다. 큰 이유와 복잡한 내용 없다.

자바스크립트는 동적 언어이기 때문에, 유연함이 큰 장점이 된다.

하지만 유연함에 따른 고충으로 많은 에러가 발생된다.

그에 따라, 더 나은 오류 검사를 도와주는 역할로 사용된다.


엄격 모드는 선택적인가? 필수적인가?


필수가 아닌 선택적이다. (참고로 ie9를 포함한 하위 버전에서는 strict mode를 지원하지 않는다.)

사용하지 않아도 무방하다.


필자는 사용 여부에 있어 무엇을 권하는가?


엄격 모드 사용을 권한다.

엄격 컨텍스트(context)를 통해 특정 액션 또는 많은 예외를 예방할 수 있다.

많은 예외는 대부분은 실수에서 비롯되지만, 기괴한 흐름을 가지는 경우도 많다.

예를 들어, 예약된 키워드를 변수 이름으로 사용할 수 있거나, 변수가 선언되지 않고도 사용되는 경우, 중복되는 경우 등과 같다.

하나의 예로, delete 키워드는 엄격 모드에서 프로퍼티가 아닌 자기 자신에 사용할 수 없다. (관련 문서)

(엄격 모드의 제한은 문서를 통해 확인하길 바란다.)


개인적인 견해로 엄격 모드에서 에러가 발생하는 코드는 잘못된 코드가 존재한다는 의미로 볼 수 있다.


반응형