돌아가기

덧셈 고치기

중요도: 5

아래 코드는 사용자에게 숫자 2개를 입력받은 다음 그 합을 보여줍니다.

그런데 의도한 대로 예시가 동작하지 않습니다. 프롬프트 창에 세팅한 기본값을 수정하지 않은 경우 덧셈의 결과는 12가 됩니다.

왜 그럴까요? 예시가 제대로 동작하도록 코드를 수정해 보세요. 결과는 3이 되어야 합니다.

let a = prompt("덧셈할 첫 번째 숫자를 입력해주세요.", 1);
let b = prompt("덧셈할 두 번째 숫자를 입력해주세요.", 2);

alert(a + b); // 12

의도한 대로 덧셈이 되지 않는 이유는 prompt 함수가 사용자 입력을 문자열로 반환하기 때문입니다.

그래서 프롬프트 창에서 입력한 변수들은 각각 문자열인 "1""2"가 되죠.

let a = "1"; // prompt("덧셈할 첫 번째 숫자를 입력해주세요.", 1);
let b = "2"; // prompt("덧셈할 두 번째 숫자를 입력해주세요.", 2);

alert(a + b); // 12

예시가 제대로 동작하게 하려면 덧셈 연산 +가 수행되기 전에 문자열을 숫자로 변환해야 합니다. 이때 Number()를 사용하거나 변수 앞에 +를 붙여줄 수 있습니다.

아래 코드에선 prompt 함수 바로 앞에서 문자열을 숫자로 변환했습니다.

let a = +prompt("덧셈할 첫 번째 숫자를 입력해주세요.", 1);
let b = +prompt("덧셈할 두 번째 숫자를 입력해주세요.", 2);

alert(a + b); // 3

아래 코드에선 alert 함수 안에서 문자열을 숫자로 변환해 보았습니다.

let a = prompt("덧셈할 첫 번째 숫자를 입력해주세요.", 1);
let b = prompt("덧셈할 두 번째 숫자를 입력해주세요.", 2);

alert(+a + +b); // 3

코드 한 줄 안에서 단항, 이항 + 연산자를 한꺼번에 쓰니 조금 웃겨 보이네요.