자바스크립트의 미지의 영역에 오신 것을 환영합니다. 여기서는 보기에는 간단한 산술 연산도 예상치 못한 결과를 가져올 수 있는 자바스크립트의 특이점을 해체합니다. 이 기사에서는 '1 + '1' = '11'가 되고 어떻게 1+'1' = 2로 만들 수 있는지에 대한 열쇠를 찾아봅니다.
왜 자바스크립트 1 + '1' = '11'가 되나?
자바스크립트에서 1 + '1'은 '11'을 반환합니다. 이는 + 연산자가 문자열과 숫자를 연산할 때 문자열로 변환한 후 연산하기 때문입니다. 자바스크립트에서 + 연산자는 다음과 같이 동작합니다.
피연산자가 모두 숫자이면 두 숫자를 더한 값을 반환합니다.
피연산자 중 하나가 문자열이면 두 피연산자를 모두 문자열로 변환한 후 문자열을 연결한 값을 반환합니다.
따라서 1 + '1'은 1을 문자열로 변환한 후 '1'과 연결한 '11'을 반환하게 됩니다.다음은 1 + '1'의 동작을 확인할 수 있는 코드입니다.
JavaScript
console.log(1 + '1'); // '11'
이러한 동작은 자바스크립트의 자료형 변환과 연산자 우선순위에 의해 발생합니다. 자료형 변환은 자바스크립트에서 두 개의 값을 연산할 때, 두 값의 자료형을 일치시켜 연산하는 과정입니다. 자바스크립트에서 자료형 변환은 다음과 같은 순서에 따라 수행됩니다.
숫자와 숫자는 숫자로 변환합니다.
문자열과 숫자는 문자열로 변환합니다.
불리언과 숫자는 숫자로 변환합니다.
불리언과 문자열은 문자열로 변환합니다.
연산자 우선순위는 자바스크립트에서 연산자의 순서를 결정하는 규칙입니다. 자바스크립트의 연산자 우선순위는 다음과 같습니다.
연산자우선순위
()
가장 높은 우선순위
**
%
+, -
*, /
<, >, <=, >=, ==, !=
&&, `
?:
가장 낮은 우선순위
따라서 1 + '1'에서 + 연산자는 1을 '1'과 동일한 자료형인 문자열로 변환한 후 연산하게 됩니다.