- undefined
- null
- boolean (true/false)
- number
- string(문자열) : 쌍따옴표("") 또는 홑따옴표('')로 감싼 모든 표현
- object(객체) : 키와 값의 조합으로 이루어진 데이터, {key:value}
typeof
연산자를 통해 각 값 또는 변수의 데이터 타입을 알 수 있으며, 이 연산자를 적용하면 다음 문자열 중 하나를 반환한다
: undefined, boolean, string, number, object(함수를 제외한 객체 또는 object), function
let msg = "message";
console.log(typeof msg); // string
console.log(typeof 100); // number
console.log(typeof null); // object (배열은 빈 객체를 참조하기 때문에 데이터 타입이 object)
console.log(typeof []); // object (배열은 확장된 객체)
boolean 타입에는 true, false 두 가지 값이 있다.
다른 데이터 타입이 boolean으로 변환되는 경우
- 문자열: 비어있지 않은 모든 문자열
- 숫자: 0이 아닌 모든 숫자
- 객체: 모든 객체({}, [] 모두 포함)
- 문자열: " " (빈 문자열)
- 숫자: 0, NaN(Not a number)
- 객체: null
- undefined
조건식의 true/false를 판단하는 if조건문에서 boolean 값 이용!
let lastName = 'Hyeonju Lee';
let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();
console.log(LastName); // Hyeonju Lee (기존의 값에 변화없음)
console.log(upperLastName); // HYEONJU LEE (전체 대문자)
console.log(lowerLastName); // hyeonju lee (전체 소문자)
.length
속성 이용
let name = "hyeonju"
console.log(name.length) // 7
ref. number형에는 length라는 속성이 존재하지 않으며, 0으로 시작하는 휴대폰번호의 경우 앞의 0 없이 뒷 숫자만 할당된다.
let phoneNumber = 01012349876;
console.log(phoneNumber); // 1012349876
console.log(phoneNumber.length); // undefined
따라서 휴대폰번호는 string형으로 저장해야 함.
let phoneNumber = "01012349876"
indexOf()
함수는 문자열에 특정 문자열이 들어있는지 확인하고, 몇번 째 순서에 해당 문자열이 있는지 알려준다. 해당 문자열이 없다면 -1을 반환.
let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍"); //12
console.log(info, firstChar);
// 'JavaScript는 프로래밍 언어이다. 12' : 프로래밍 문구는 12번째에서 시작
if (firstChar !== -1){ // 조건: firstChar가 -1이 아닐 때, (해당 문자열이 있을 때)
info=info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length)
// slice(): 텍스트를 잘라주는 함수 - slice(잘릴 시작위치, 잘릴 끝위치)
// info.slice(0, firstChar) = info.slice(0, 12)
// info.slice(firstChar+4, info.length) = info.slice(16, 22)
}
console.log(info);
liceCityFromAddress 함수를 구현해 주세요.
sliceCityFromAddress 함수는 address 인자를 받습니다.
address 인자에는 주소를 나타내는 string이 주어집니다.
주어진 주소가 어느 도시인지를 찾아내서, 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
주소는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
예를 들어, 다음과 같은 주소가 주어졌다면;"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:"경기도 분당구 중앙공원로 53"
function sliceCityFromAddress(address) { let newAddress = address.indexOf("도"); let noCity = address.indexOf("시"); if (newAddress == -1 && noCity !== -1) { // 광역시, 특별시 같이 '도'없이 '시'만 있는 경우 address = address.slice(noCity+2, address.length); return address; } else { // 그 외 나머지 지역의 경우 address = address.slice(0, newAddress+2) + address.slice(noCity+2, address.length); return address; } }
자바스크립트는 데이터타입을 신경쓰지 않는다.
let a = 10; // type: Number
a = "나는 string인데.."; // type: String
console.log("200"-"안녕"); // NaN(Not a Number) 반환
number
함수 이용var birthYearInput = "2000";
console.log(typeof birthYearInput); // string
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear); // number
parseInt
, parseFloat
이용parseInt
문자열을 정수로 전환 (소수점은 버림)
parseFloat
문자열을 실수로 전환
parseInt("1.901"); // console.log(parseInt("1.901")) : 1
parseFloat("1.901"); // console.log(parseFloat("1.901")) : 1.901
Number("1.901"); // console.log(Number("1.901")) : 1.901
parseInt("200") + 1; // console.log(parseInt("200")+1) : 201
var numberAsNumber = "1234";
var numberAsString = numberAsNumber - 0;
console.log(numberAsNumber, typeof numberAsNumber); // 1234 string
console.log(numberAsString, typeof numberAsString); // 1234 'Number'
toString()
이용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
우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
nationalPensionRemainingYearCount 함수를 구현해주세요.
nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
age_string은 나이 값인데 string형 값으로 되어 있습니다.
주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴해주세요.
리턴 값으로는 다음 문장 처럼 리턴해야 합니다."앞으로 20년 남으셨습니다"
예를 들어, age_string 값이 다음과 같다면: "35"
리턴 값은 다음과 같아야 합니다."앞으로 30년 남으셨습니다"
function nationalPensionRemainingYearCount(age_string) { let ageNumber = Number(age_string); if (ageNumber < 65) { const yearLeft = 65 - ageNumber; return ("앞으로 "+ yearLeft + "년" + " 남으셨습니다") } else if (age_string = 65) { return ("앞으로 0년 남으셨습니다") } }
날짜와 시간을 저장하고 나타낼 때 날짜 객체
를 사용한다.
날짜 객체 생성시에는 다음과 같이 new
연산자 다음에 Date
생성자를 쓴다.
let rightNow = new Date();
console.log(rightNow); // 2021-01-15T13:38:57.885Z
let year = rightNow.getFullYear(); // 2021;
let month = rightNow.getMonth() + 1; // 1 (현재 달보다 1 작은 값 반환됨)
let date = rightNow.getDate(); // 15
let day = rightNow.getDay(); // 5 (Sunday - Saturday: 0-6)
let currentHour = rightNow.getHours(); // 22
let currentMin = rightNow.getMinutes(); // 42
getTime
getTime
은 날짜의 밀리초 표현을 반환함
let time = rightNow.getTime(); // 1610718562467
// 기준 일자 1970년 1월 1일로부터 1610718562467 밀리초가 지났다는 의미
Math.round()
반올림
Math.ceil()
올림
Math.floor()
내림
Math.round(4.7); // returns 5
Math.ceil(2.5); // returns 3
Math.floor(2.5); // returns 2
Math.pow(x,y)
x의 y승
Math.pow(8, 2); // 8^2, returns 64
Math.abs()
절대값
Math.abs(-4.7); // returns 4.7
이 외 기타 Math 객체는 여기에서 확인할 수 있다.
Math.random()
랜덤 숫자 구하기
var randomNumber = Math.random(); // 0.0000000000000000에서 0.9999999999999999 사이의 랜덤수 제공
최소(min), 최대값(max)을 받아 그 사이의 랜덤수를 return하는 함수 구현하기
function getRandomNumber (min, max) { const randomNumber = Math.random(); return randomNumber * (max - min) + min; } // 0 < randomNumber <1 // max: 10, min: 2 일때, 위 공식에 의하면 2 < rancomNumber < 9가 되므로 최소값과 최대값 사이의 랜덤값을 return하게 된다.