작성
·
219
0
안녕하세요, 소플님.
Chapter12 Calculaotr.jsx 파일에 있는
섭씨, 화씨 온도 변환 코드와
관련해서 문의드리고 싶은 부분이 있어 글을 남깁니다.
만약 사용자가 섭씨 온도 입력한에 섭씨 온도를 입력했다고 했을 때
온도는 temperature 변수에 저장되고, 섭씨 온도를 입력했기에
celsius란 변수에 저장됩니다. 또한 scale은 c 입니다.
사용자가 섭씨 온도를 입력했으니 화씨 온도로 바꿔줘야 할 차례인데
이 부분부터 잘 이해가 가지 않습니다.
const celsius =
scale === "f" ? tryConvert(temperature, toCelsius) : temperature;
저는 위의 코드를 섭씨 온도를 화씨 온도로 바꿔주는 부분으로 이해했습니다.
하지만 그러기 위해선 scale === f 로 두고,
tryConvert(temperature, toCelsius) 로 두는 게 아닌
const celsius =
scale === "c" ? tryConvert(temperature, toFahrenheit) : temperature;
위의 코드처럼 scale을 c로 두고
tryConvert(temperature, toFahrenheit) 로 바꿔줘야
사용자가 입력한 섭씨 온도를 화씨 온도로 바꿔줘.가 되는 걸로 이해했습니다.
scale을 c로 둔 이유는 사용자가 섭씨 온도를 입력하면
온도는 temperature 변수, 그리고 celsius 변수에 저장되며
celsisus 변수에 저장되면서 동시에 위의 코드에 의해 scale은 c가 되기에
scale을 c로 뒀습니다.
const celsius =
scale === "c" ? tryConvert(temperature, toFahrenheit) : temperature;
그래서 위에처럼 코드를 작성해야
섭씨 온도를 화씨 온도로 바꿔주는 거라고 생각했습니다.
혹시 제가 어떤 부분에서 잘못 생각하고 있는지 알 수 있을까요?
답변 1
1
안녕하세요, 소플입니다.
제가 질문을 정확하게 이해하지 못했는데, 우선 해당 부분에 대해서 설명을 적어보겠습니다.
사용자가 섭씨 입력란에 입력한 경우 scale
은 c
가 되고,
화씨 입력란에 입력한 경우 scale
은 f
가 됩니다.
그리고 입력한 온도의 값은 섭씨, 화씨와 상관없이 temperature
에 저장됩니다.
그리고 이렇게 입력받은 값을 각각 섭씨와 화씨로 변환해서 화면에 보여줘야 하는데,
그 때 사용하는 코드가 바로 아래 코드입니다.
const celsius = scale === "f" ? tryConvert(temperature, toCelsius) : temperature;
const fahrenheit = scale === "c" ? tryConvert(temperature, toFahrenheit) : temperature;
첫 번째 줄의 코드는 입력받은 온도의 단위가 화씨일 경우(scale === "f"
) 섭씨로 변환(tryConvert(temperature, toCelsius)
)하고,
그게 아닐 경우(이미 섭씨 온도값인 경우) 온도 값을 그대로 반환하여 celsius
에 저장하게 됩니다.
두 번째 줄의 코드는 입력받은 온도의 단위가 섭씨일 경우(scale === "c"
) 화씨로 변환(tryConvert(temperature, toFahrenheit)
)하고,
그게 아닐 경우(이미 화씨 온도값인 경우) 온도 값을 그대로 반환하여 fahrenheit
에 저장하게 됩니다.
이렇게 해서 최종적으로 섭씨와 화씨 온도가 화면에 표시되게 됩니다.
혹시 설명을 보고도 이해가 가지 않는 부분이 있다면 추가로 질문 남겨주시기 바랍니다!