어떤 값을 다른 타입으로 바꾸는 과정이 명시적이면
'타입 캐스팅'
, 암시적이면'강제변환'
이라고 하는데,'명시적 강제변환'
은 코드만 봐도 의도적으로 타입변환을 일으킨다는 사실이 명백한 반면,'암시적 강제변환'
은 다른 작업 도중 불분명한 부수 효과로부터 발생하는 타입변환이다.
var a = 42;
var b = a + ""; // 암시적 강제변환
var c = String( a ); // 명시적 강제변환
b와 c 모두 숫자 데이터 42를 문자 데이터 "42"로 강제변환한다.
a + ""의 의미를 정확히 파악하고 의도적으로 문자열 변환을 했다면, 그 자체로 충분히 '명시적'
이지 않냐고 생각할 수 있다.
반대로, 한 번도 문자열 강제변환 시 String() 함수를 사용한 적 없는 사람에겐 이것이야말로 '암시적'
이지 않냐고 반문할 수 있다.
중요한 것은 내가 작성한 코드를 나만 보게 될 일은 아주 드물다는 것이다.
회사에서 일을 할 때 나 뿐만 아니라 다른 개발자들과 협업하며 코드를 유지보수 해나갈 때 명시적 변환과 암시적 변환을 각각 어떻게 받아들일까?
언제나 제일 어려운 말이지만.
상황에 맞게, 유도리 있게, 미래를 생각해서.