⊗jsPmBsATC 43 of 505 menu

자동 타입 변환

이미 알고 계시듯이, 자바스크립트에서 문자열은 따옴표로 감싸야 합니다. 모든 문자가 숫자인 문자열이 될 수도 있습니다:

let a = '123';

이 경우 변수 a 역시 문자열이지만, 약간의 뉘앙스가 있습니다.

뉘앙스의 핵심은 다음과 같습니다: 숫자로 이루어진 문자열에 어떤 산술 연산을 수행하면 - 그 연산은 마치 우리에게 실제 숫자가 있고 문자열이 아닌 것처럼 수행됩니다:

alert('2' * '3'); // 6을 출력합니다

이 경우 자바스크립트는 우리가 문자열에는 허용되지 않지만, 숫자에는 허용되는 연산을 수행하려고 한다는 것을 인지합니다.

또한, 실제로 우리의 문자열이 따옴표 안의 숫자라는 것을 인지합니다. 따라서 자바스크립트는 자동으로 이러한 문자열을 숫자로 변환하고 해당하는 산술 연산을 수행합니다.

이는 우리 문자열에 오직 숫자만 있을 때 작동합니다. 거기에 단 하나의 글자라도 있다면 - 자바스크립트는 연산을 부적절하다고 판단하고 그 결과를 NaN 값으로 만듭니다:

alert('2' * '3s'); // NaN을 출력합니다

또한, 연산이 수학적으로는 올바르지만 문자열에는 허용되지 않는 경우 자동 변환이 발생합니다.

예를 들어, 문자열은 (숫자는 가능하지만) 곱하기, 나누기, 빼기를 할 수 없으므로, 모든 그런 연산에서는 숫자로 이루어진 문자열의 자동 숫자 변환이 일어납니다.

그러나, 문자열은 숫자와 마찬가지로 연산자 +를 사용하여 더할 수 있습니다. 이는 덧셈의 경우 자동 변환이 일어나지 않음을 의미합니다:

let a = '1' + '2'; alert(a); // '12'를 출력합니다 - 문자열 결합이 발생했습니다

만약 하나의 피연산자는 숫자이고 다른 하나는 문자열이라면, 항상 문자열이 우선합니다:

let a = 1 + '2'; alert(a); // '12'를 출력합니다

이런 경우 자바스크립트는, 반대로, 자동으로 숫자를 문자열로 변환하고 문자열 결합을 수행합니다.

그러나, 피연산자가 두 개보다 많은 경우에는 뉘앙스가 있습니다: 이 경우 특정 타입으로의 변환은 연산 수행 순서에 따라 달라집니다.

다음 예시에서는 먼저 23가 숫자로서 더해지고, 그 결과가 문자열 '1'에 이미 문자열 '5'로 더해져서, 최종적으로 문자열 '15'를 얻게 됩니다:

let a = '1' + (2 + 3); alert(a); // '15'를 출력합니다

만약 괄호를 제거하면, 모든 것은 왼쪽에서 오른쪽으로 더해집니다. 즉, 먼저 문자열 '1'에 숫자 2가 더해져서 결과적으로 문자열 '12'가 됩니다. 그런 다음 이 문자열에 숫자 3가 더해져서 결과적으로 문자열 '123'가 됩니다:

let a = '1' + 2 + 3; alert(a); // '123'을 출력합니다

그러나 다음 예시에서는 숫자 23가 처음에 쓰여 있으므로, 먼저 그것들이 숫자로서 더해져서 결과적으로 숫자 5가 되고, 그런 다음 이 숫자에 문자열 '1'가 더해져서 최종적으로 문자열 '51'를 얻게 됩니다:

let a = 2 + 3 + '1'; alert(a); // '51'을 출력합니다

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' + '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' + 2; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = 5 + '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = 5 + 2; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' * '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' - '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' / '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' % '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5s' * '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5s' + '2'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = (-'5') + (-'2'); alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' * 1 + '2' * 1; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '5' * '1' + '2' * '1'; alert(a);

코드를 실행하지 않고, 무엇이 화면에 출력될지 결정하세요:

let a = '' + 3 + 1; alert(a);
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부