ex) 수학과 영어의 점수를 받아 평균을 구하는 프로그램을 작성.
const mathScore = prompt("수학 몇점?");
const engScore = prompt("영어 몇점?");
const result = mathScore + engScore / 2;
//const result = (mathScore + engScore) / 2
// 그리하여 주석과 같이 + 우선연산을 위해 ()괄호를 씌워준다.
console.log(result)
두 숫자 값을 prompt에 영어는 90 수학은 80을 입력했지만 이상한 값이 출력됨.
그리하여 다른 방법으로 테스트를 진행함.
: 사용자에게 입력받지 않고, 변수에 정수형 값을 넣으니 재대로된 값이 나옴.
const mathScore = 90;
const engScore = 80;
const result = (mathScore + engScore) / 2;
console.log(result);
처음 코드에서 왜 이상한 결과가 나왔을까?
: prompt에서 입력 받은 값은 무조건 문자형이다.
: 숫자 90이 아닌 문자 "90"이기 때문이다.
: 문자와 문자를 더해주면 그대로 이어지기 때문에 "90"과 "80"을 prompt로 입력받아 더하면 170이 아닌 "9080"이 되고, "9080"이란 값을 2로 나누었으니 "9080" / 2 = 4540이란 결과가 나온 것이다.
"9080"도 문자형인데 왜 나누기 2는 동작한걸까?"
: 숫자형이 아니더라도 나누기와 같은 표현식은 숫자형으로 자동으로 변환하여 계산되기 때문이다.
문자 "6"과 "2"를 나누면 결과로 숫자 3이 나오게 되며 이러한 과정을 자동 형변환이라고 한다.
//console.log는 하단 코드와 같이 쉼표로 구분하여 여러가지 값을 한번에 찍을 수 있음.
console.log(
String(3), //숫자3은 문자열 3으로 변경
String(true),//불린값 true,false는 각각 문자열로 변경
String(false),
String(null), //null과 undefined도 문자열로 변경됨.
String(undefined),
)
console.log(
Number("1234") //문자 "1234"가 숫자 1234로 변환됨.
)
: 결과
console.log(
Number("1234afjw")//결과값으로 NaN이 나옴.
)
불린형으로의 형변환은 fasle의 케이스만 기억하면 됨.
fasle가 되는 값
아래와 같은 값 이외에는 모두 true가 됨.
:숫자 0
:빈 문자열"
:null
:undefined
:NaN
형변환하면 fasle가 되는 값
console.log(
Boolean(0),
Boolean(""),
Boolean(null),
Boolean(undefined),
Boolean(NaN),
)
: 결과
console.log(
Boolean(1),
Boolean(123),
Boolean("javascript"),
)
:결과
console.log(
Number(true), //결과 1
Number(false), //결과 0
Number("문자") //NaN
Number(0) //false
Number('0')//true
Number('')//false
Number(' ')//true <- 공백
해당 글은 유튜브 코딩앙마님의 javascript기초 강의영상을 정리하였습다.
코딩앙마