Javascript 코드에서 ‘use strict’의 의미가 무엇인가요?
초보 개발자입니다.
Javascript 코드를 보다보면 ‘use strict’라는 키워드가 코드 맨 처음에 붙는 경우가 종종 있네요.
어떤 경우에 사용하는 키워드인지 알게 쉽게 설명해주실 분이 있으실까요??
구글링해보면 내용이 너무 많고 어렵게 설명해놔서 잘 이해가 안되요 ㅠㅠ
안녕하세요 strick모드 답변드리겠습니다.
strict : 1. (규칙 등이) 엄격한 2. (사람이 남에 대해) 엄격한
use strict 는 말그대로 '엄격하게 쓴다' 의 뜻으로 보다 정확한 형태의 데이터를 사용하는 겁니다.
대표적인 예를 두가지정도 들면 이해가 쉬울겁니다.
예제1) 정수 0 과 문자 '0'이 있는데, 변수를 정수로 지정하고 입력은 '0' 문자열인 경우 에러
strick 모드가 아닌경우 : 문자열 '0'을 단순히 정수0으로 자동으로 변환시켜서 처리
strick 모드 : 정수(0) != 문자열('0') 타입이 맞지않아 에러가 발생합니다.
예제2) 값의 최대길이가 5자리인데, 6자리가 들어온 경우
strcik모드 아닌 경우 : "가나다라마바" -> "가나다라마" - 5자리까지만 자동으로 입력
strick모드 : data too long 에러 발생 - 최대길이가 5인경우만 에러가 발생하지 않음
말그대로 엄격하게 데이터를 관리 하므로, 불필요한 데이터 자원을 아낄수 있는 장점이 있지만,
에러가 발생하지 않아도 되는 곳에서 발생하는 단점도 있어서 목적에 맞는지 따져보시고 사용하시면 됩니다.
한 블로그에서 예를들어 설명이 잘 되어있어 하단에 참조했습니다.
간단하게 답변드리겠습니다.
에러는 문법에러와 런터임에러로 나눌 수 있습니다.
문법에러 : 실행되기 이전에 발생하는 에러로 해당 에러로 인해 코드가 실행될 수 없습니다.
런타임에러 : 코드 검사에서 발생하지 않는 에러지만 실행 도중에 발생하는 에러로 실행도중에만 알 수 있습니다.
요즘엔 워낙 툴들이 잘 되어 있어서 빌드를 하거나 하면 코딩 단계의 에러를 다 표시해주죠.
그래서 사실 보통 우리가 실제 서비스되고 있는 프로그램 혹은 웹에서 접하는 대부분의 에러는 코딩 단계에서의 에러라기 보다는 런타임에러가 많습니다.
허나, 이 런타임 에러를 코딩 단계에서 최소한으로 없애고 싶다! 할 때 보통 쓰긴하죠
예를 들자면
testvar = 4; testvar2 = 5; test = testvar + testvar2; alert(test);이 코드는 정상적으로 실행이 되는 코드입니다. (https://jsfiddle.net/xcbph2gd/)
헌데 var testvar = 4;
라고 하지 않았는데 말이죠.
하지만 상단에 "use strict"를 쓰면
해당 코드는 정의되지 않았다는 오류를 반환합니다. (https://jsfiddle.net/xcbph2gd/1/)
간단히 말해서 런타임으로 가기 전 코딩단계에서 조금 더 내 코드를 엄격하게 관리하겠다
라고 미리 선언하는 것이라고 생각하시면 됩니다.