on
기본 연산자와 수학 실습 과제
기본 연산자와 수학 실습 과제
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