기본 연산자와 수학 실습 과제

기본 연산자와 수학 실습 과제

2021.11.16 - [Language/JavaScript] - 기본 연산자와 수학

전위형과 후위형

아래 코드가 실행된 후, 변수 a, b, c, d엔 각각 어떤 값들이 저장될까요?

let a = 1, b = 1; let c = ++a; // ? let d = b++; // ?

풀이 )

a = 2 , b = 2, c = 2, d = 1

해설 )

a = 2

b = 2

c = 2

d = 1

let a = 1, b = 1; alert( ++a ); // 2, 전위형은 증가 후의 값을 반환합니다. alert( b++ ); // 1, 후위형은 증가 전의 값을 반환합니다. alert( a ); // 2, 값이 1만큼 증가합니다. alert( b ); // 2, 값이 1만큼 증가합니다.

할당 후 결과 예측하기

아래 코드가 실행되고 난 후, a와 x엔 각각 어떤 값이 저장될까요?

let a = 2; let x = 1 + (a *= 2);

풀이 )

a = 4, x = 5

해설 )

a = 4 (기존 값(2)에 2를 곱한 4)

(기존 값(2)에 2를 곱한 4) x = 5 (1 + 4의 결과)

형 변환

아래 표현식들의 결과를 예측해 보세요.

"" + 1 + 0 "" - 1 + 0 true + false 6 / "3" "2" * "3" 4 + 5 + "px" "$" + 4 + 5 "4" - 2 "4px" - 2 7 / 0 " -9 " + 5 " -9 " - 5 null + 1 undefined + 1 " \t

" - 2

예측한 결과를 적어본 후, 해답과 비교해 보시기 바랍니다.

해설 )

"" + 1 + 0 = "10" // (1) "" - 1 + 0 = -1 // (2) true + false = 1 6 / "3" = 2 "2" * "3" = 6 4 + 5 + "px" = "9px" "$" + 4 + 5 = "$45" "4" - 2 = 2 "4px" - 2 = NaN 7 / 0 = Infinity " -9 " + 5 = " -9 5" // (3) " -9 " - 5 = -14 // (4) null + 1 = 1 // (5) undefined + 1 = NaN // (6) " \t

" - 2 = -2 // (7) (1) 피 연산자 중 하나가 문자열인 "" + 1에서 1은 문자형으로 변환됩니다. 따라서 공백과 문자열 1을 더한, "" + 1 = "1"과 같은 효과를 발 휘하죠. 그다음 연산 "1" + 0에도 같은 규칙이 적용됩니다. (2) 뺄셈 연산자 -는 기타 수학 연산자처럼 숫자형만을 인수로 받습니다. 빈 문자열 ""는 숫자 0으로 변환되기 때문에 결과는 -1이 됩니다. (3) 피 연산자 중 하나가 문자열이므로 숫자 5가 문자열로 변환됩니다. (4) 뺄셈 연산자는 인수를 숫자형으로 변화시키므로 " -9 "는 숫자 -9로 변합니다. 앞, 뒤 공백은 제거되죠. (5) 숫자형으로 변환 시 null은 0이 됩니다. (6) undefined는 숫자형으로 변환시 NaN이 됩니다. (7) 문자열이 숫자형으로 변할 땐 문자열 앞뒤의 공백이 삭제됩니다. 뺄셈 연산자 앞의 피연산자는 공백을 만드는 문자 \t와

, 그 사이의 “일반적인” 공백으로 구성됩니다. 따라서 " \t

"는 숫자형으로 변환 시 길이가 0인 문자열로 취급되어 숫자 0이 됩니다. 덧셈 고치기

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

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

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

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

풀이 )

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

해설 )

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

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

예시가 제대로 동작하게 하려면 덧셈 연산 +가 수행되기 전에 문자열을 숫자로 변환해야 합니다.

이때 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

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

from http://heimish-web.tistory.com/40 by ccl(A) rewrite - 2021-11-16 17:01:37