TIL_23_with Wecode 013 JavaScript about String

🐱‍👤String <-> Number 변환
자바스크립트 언어의 특징 중 하나가 데이터 타입을 신경쓰지 않는다는 것입니다.
다음 코드를 보면 오류없이 모두 정상으로 나옵니다.

let a = 10; // Number
a = "나는 String인데.."; // String
console.log(a);
//결과: 나는 String인데..

다른 언어에서는 변수에 어떤 값을 할당해서 변수의 type이 확정되면, 그 후에 다른 type의 값을 할당할 수가 없습니다.

let a = '5'; // String
a = 5; // Number
console.log(a) //5
let a = '900';  
let b = 350; 
let c = Math.random(); 
let d = '5' + 5; 
a
//"900"
b
//350
c
//0.19758219165286195
d
//"55"
console.log('200'+'10'); //20010
console.log('200'-'10'); //190
console.log(200+'11'); //20011
console.log('200'+11); //20011
console.log('200'-'안녕'); //NaN

NaN은 Not a number 라는 뜻입니다.

앞 시간에 배웠던 "+"의 특징을 한 번 보겠습니다.

alert("김예리" + "님 안녕하세요."); 
let place = "위코드";
alert(place + "에 오신 것을 환영합니다"); 

숫자끼리의 더하기는 물론이고,
String끼리 문자를 연결할 수가 있었습니다.

console.log("200"-"안녕");

하지만 뺄셈의 경우, 오로지 숫자에만 사용되는 연산이죠.
"안녕하세요" - "안녕" = ??
String의 경우,
왠지 같은 "안녕"을 빼니까 "하세요"만 남으면 좋겠지만
전 세계 공통적으로 약속된 연산이 아니기 때문에 존재하지 않는 연산입니다.
그렇기 때문에 NaN 이라는 결과가 반환됩니다.

14세 미만의 사람이 가입했는지 확인하려면 아래의 코드가 필요합니다.

let birthYear = "2000";
let currentYear = 2019;
if (currentYear - birthYear < 14) {
  alert("가입할 수 없습니다.");
}
console.log(2019+"2000"); //20192000
console.log(2019-"2000"); //19

컴퓨터가 +의 양쪽을 보고, 하나라도 String이 있으면
문자열로서 합쳐줍니다.
그런데 -라면, String의 마이너스는 존재 하지 않으므로
양쪽의 값을 모두 숫자로 변환해서 계산해줍니다.
물론 위의 코드가 잘 동작되긴 하지만,
함께 코드를 보는 동료가 충분히 오해할 수 있는 코드입니다.

계산이 잘 되더라도 텍스트로 표현된 숫자는,
꼭 숫자로 바꿔서 계산을 해주셔야 합니다.
다음과 같이 Number 함수를 사용해서 String에서 Number형으로 전환할 수 있습니다.

var birthYearInput = "2000";
console.log(typeof birthYearInput); //string
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear); //number

Number함수 말고 parseInt, parseFloat 등이 있습니다.

parseInt("1.901"); //1
parseFloat("1.901"); //1.901
Number("1.901"); //1.901
parseInt("200") + 1; //201

Number형에서 String형으로 변환하고 싶을 수도 있습니다.

var numberAsNumber = 1234; 
var numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber);
// 1234 "number"
console.log(numberAsString, typeof numberAsString);
// 1234 string
  • 연산의 특성을 활용하여 아래와 같이도 변환할 수 있습니다.
var numberAsNumber = 1234; 
var numberAsString = 1234 + "";
console.log(numberAsNumber, typeof numberAsNumber);
// 1234 "number"
console.log(numberAsString, typeof numberAsString);
// 1234 string

👁Assignment
우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
nationalPensionRemainingYearCount 함수를 구현해주세요.

  • nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
  • age_string은 나이 값인데 string형 값으로 되어 있습니다.
  • 주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴해주세요.
  • 리턴 값으로는 다음 문장 처럼 리턴해야 합니다.
"앞으로 20년 남으셨습니다"

예를 들어, age_string 값이 다음과 같다면:

"35"

리턴 값은 다음과 같아야 합니다.

"앞으로 30년 남으셨습니다"

답변:

function nationalPensionRemainingYearCount(age_string) {
  let numberAge = Number(age_string);
  let years = 65 - numberAge;
  return "앞으로 "+years+"년 남으셨습니다";
}

위에서 배운 Number 함수를 사용하여 string이었던 age_string 을 숫자로 바꿔줍니다. 그리고 변수를 하나 더 추가하여, 남은 년수를 알려줄 변수를 지정합니다.

좋은 웹페이지 즐겨찾기